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

tru*_*ru7 3 object-literal typescript

我想用不包含该类中所有元素但其元素在该类中的对象文字初始化一个类的实例。

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
Run Code Online (Sandbox Code Playgroud)

利用ts的大部分验证进行分配的方式是什么?

test=Object.assign(test,{aStr:"hello",aNom:12});
Run Code Online (Sandbox Code Playgroud)

可以,但是您错过了输入字段的验证-请参阅aNom错了,但可以进入

Tit*_*mir 9

您有一个对象文字,必须使用以下方法创建类的实例 new ClassName()

最简单的解决方案是添加一个接受 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});
Run Code Online (Sandbox Code Playgroud)

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