【发布时间】:2018-11-02 18:19:27
【问题描述】:
我有一个类,其属性旨在由开发人员扩展,但我无法让 typescript 推断(或让开发人员能够指定)更具体的类型。在这个例子中,我的应用程序类上有一个属性“models”,它应该与“Models”类型兼容。在我的情况下,开发人员将在 100% 的时间内(几乎)用更具体的类型覆盖它,并且一旦设置就永远不会修改 - 并且将在使用之前设置。
如何帮助 typescript 理解更具体的类型 - 或允许开发人员覆盖该类型?请记住,这适用于更多属性,这使得使用“const app = new App({ config, models, stats, state });”指定类型很不方便
// External modules/types
interface Model {
id: number;
}
interface UserModel extends Model {
name: string;
}
interface Models {
[service: string]: Model;
}
class Application {
public models: Models = {};
}
// My app
const app = new Application();
app.models = {
User: {
id: 1,
name: 'Kent',
} as UserModel,
};
// app.models does not have .User
【问题讨论】:
标签: typescript