gpt4 book ai didi

typescript - 指示 typescript 一个类动态分配属性

转载 作者:搜寻专家 更新时间:2023-10-30 21:30:25 27 4
gpt4 key购买 nike

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

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

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

我的问题是,当我尝试访问 then 时,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 });

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

关于typescript - 指示 typescript 一个类动态分配属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40170441/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com