我有一个带有构造函数的抽象类型脚本类.此构造函数接受对象,然后try 使用对象中的数据设置类的属性.
export default class AbstractModel {
constructor(properties: object) {
Object.assign(this, properties);
}
}
然后有几个类继承了这AbstractModel
个类.
例如:
import AbstractModel from "./abstract-model";
export default class Derived extends AbstractModel {
firstname!: string;
lastname!: string;
age: number = 1;
}
我的假设是,当我创建一个新的Derived
并在构造函数中传递{age: 10}
时,新创建的Derived
将age
设置为10
.然而,年龄似乎总是1
的初始值.其他没有初始值的属性正在按预期进行设置.
const derived = new Derived({firstname : "John", lastname: "Doe", age: 10});
输出:
Derived {
firstname: 'John',
lastname: 'Doe',
age: 1,
}
将其记录在AbstractModel
的构造函数中会得到以下输出
export default class AbstractModel {
constructor(properties: object) {
Object.assign(this, properties);
console.log(this);
}
}
输出:
Derived {
firstname: 'John',
lastname: 'Doe',
age: 10,
}
将其记录在Derived
的构造函数中会得到以下输出
export default class Derived extends AbstractModel {
firstname!: string;
lastname!: string;
age: number = 1;
constructor(properties: object) {
super(properties);
console.log(this);
}
}
输出:
Derived {
firstname: 'John',
lastname: 'Doe',
age: 1,
}
有谁能告诉我为什么它会这样?