如果与扩展运算符一起使用,则需要将属性分配给从接口定义的唯一属性。
我期待使用带有扩展运算符的打字稿构造函数的解决方案。
例如。
export interface IBrand {
id: string;
name: string;
}
export class Brand implements IBrand {
id: string;
name: string;
constructor(data: IBrand) {
this.id = data.id;
this.name = data.name;
}
}
Run Code Online (Sandbox Code Playgroud)
这是一种选择,所以当我像这样调用这个类时,不知道有多少成员,但我只id, name需要最终对象。
new Brand({...data })
Run Code Online (Sandbox Code Playgroud)
案例:但是当我有 25 个以上的键时 data
export interface IBrand {
id: string;
name: string;
}
export class Brand implements IBrand {
id: string;
name: string;
constructor(data: Partial<IBrand>) {
Object.assign(this, data);
}
}
Run Code Online (Sandbox Code Playgroud)
我不希望再次编写所有属性的构造函数。不管它有 25 个,它只是分配现有的属性将被分配。如果数据具有section, genre或任何其他属性,它将被忽略。
我的第二个片段不起作用。
这不使用传播运算符,但您可以使用此答案中的方法
constructor(data: IBrand) {
for (let key in data) {
this[key] = data[key];
}
}
Run Code Online (Sandbox Code Playgroud)
然后实例化...
new Brand(data);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3984 次 |
| 最近记录: |