【发布时间】:2021-12-30 22:53:06
【问题描述】:
我正在使用继承来初始化class<T> 的属性,其中Object 实现所有T 属性{..} 传递给constructor
export default abstract class DatabaseObjectModel<T> extends JSONModel<T> {
constructor(json: T) {
super();
this.fromJSON(json);
}
}
export default abstract class JSONModel<T> extends ModelValidation {
// abstract toJSON(): Object;
// abstract fromJSON(json: Object): T;
toJSON() {
// Default toJSON
return JSON.parse(JSON.stringify(this));
}
fromJSON(json: Object) {
// For each key of json, assign value to this.key
for (let key in json) {
this[key] = json[key];
}
}
}
问题是,当我像这样初始化DatabaseObjectModel-inherited 类时:
new ImplementingDatabaseObjectModel({
id: randomUUID(),
name: "MASTER",
permissions: [],
assignedRoles: undefined,
})
我收到以下错误:
Argument of type '{...}' is not assignable to parameter of type 'ImplementingDatabaseObjectModel
如何修改 DatabaseObjectModel<T> constructor 以接受 Object 实现 type T 的所有属性但不是它的实例?
【问题讨论】:
标签: typescript oop