扩展父类使用静态方法创建子对象

时间:2019-07-12 08:54:34

标签: javascript typescript class new-operator extend

我目前正在从事我的第一个Angular项目,这是我第一次使用TypeScript。

我的项目中有扩展类的模型。

export class MyModel {
    fill(data) {
        Object.keys(this).forEach(field => this[field] = data[field]);

        return this;
    }
}

这使我可以打电话:const coolModel = (new CoolModel()).fill(data); const coolModel很好地暗示是CoolModel类型。

不过我想打个电话:CoolModel.fill(data);

我认为这段代码可以做到:

export class MyModel {
    static fill(data) {
        const coolMe = new this();

        Object.keys(coolMe ).forEach(field => coolMe [field] = data[field]);

        return coolMe ;
    }
}

并调用:const coolModel = CoolModel.fill(data);,但是现在提示const coolModel属于MyModel类型。

甚至可以在扩展父对象上使用静态方法来创建子对象吗?甚至可以说这是期望的吗?

我的胆量告诉我应该有可能。

0 个答案:

没有答案