打字稿用部分对象文字初始化对象

typescript initialize object with partial object literal

我想用不包含 class 中的所有元素但其元素在 class.[=12= 中的对象文字来初始化 class 的实例]

class ATest{
    aStr:string;
    aNum:number;

    result(){return this.aStr + this.aNum;}
}
let test=new ATest;

test={aStr:"hello",aNum:12};   // error, result() is missing in the object literal

利用 ts 的大部分验证来完成该作业的方法是什么?

test=Object.assign(test,{aStr:"hello",aNom:12});

会工作,但你会错过输入字段的验证 - 看到一个错误但进入的 Nom

您有一个对象字面量,必须使用 new ClassName()

创建 class 的实例

最简单的解决方案是添加接受 Partial<T>

的构造函数
class ATest{
    aStr:string;
    aNum:number;
    constructor(obj: Partial<ATest>) {
        Object.assign(this, obj);
    }
    result(){return this.aStr + this.aNum;}
 }

 let test=new ATest({aStr:"hello",aNum:12});

在这个新构造函数中,您可以根据需要对字段进行验证。