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