我想初始化一个类的实例,其对象文字不包含类中的所有元素,但其元素在类中。
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错误但是进入
答案 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});
在这个新构造函数中,您可以根据需要对字段进行验证。