typescript用部分对象文字初始化对象

时间:2018-02-05 12:02:02

标签: typescript object-literal

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

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});

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

1 个答案:

答案 0 :(得分:8)

您有一个对象文字,必须使用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});

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