指示打字稿,类动态分配属性

味噌

我有一个简单的类定义,如下所示:

class Model {
  constructor(props?:{}) {
    _extend(props, this);
  }
}

构造函数接受一个对象作为参数,然后使用在_extend某处定义函数将其属性复制到实例

我的问题是当我尝试访问Typescript时,Typescript抱怨类定义中未定义的属性。

let model = new Model({id: 1, name: 'coyote'});
model.id;  // Property 'id' does not exist on type Model

有没有办法告诉TypeScript这个类可以具有未在类中定义的属性?

目前,我正在使用instance['prop_name']测试文件中的表单访问属性

叉子

您可以考虑使用工厂方法的替代方法:

class Model {
    private constructor(props?: any) { }

    static create<T>(props?: T): T & Model {
        return new Model(props) as T & Model;
    }
}

let model = Model.create({ a: 123 });

如果您的类定义不好,可以尝试以下方法:

class ModelClass {
    constructor(props?: any) { }
}

type ModelStatic = {
    new <T>(props?: T): ModelClass & T;
} & typeof ModelClass;

const Model: ModelStatic = ModelClass;
type Model = ModelClass;

let model = new Model({ foo: 123 });

但是我还是建议第一种方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章