我有一个简单的类定义,如下所示:
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] 删除。
我来说两句