打字稿用部分对象文字初始化对象
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});
在这个新构造函数中,您可以根据需要对字段进行验证。
我想用不包含 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()
最简单的解决方案是添加接受 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});
在这个新构造函数中,您可以根据需要对字段进行验证。