【发布时间】:2018-07-01 01:10:21
【问题描述】:
来自 Python 背景,我在尝试使 Typescript 对以下继承模型感到满意时遇到了一些问题。
给定以下基类:
// model.ts
export class Model {
serialize() {}
static deserialize(dbRow) {}
static async filter(options) {
const dbRows = await getData(options);
return dbRows.map(row => this.deserialize(row));
}
}
以及以下扩展它的类:
// user.ts
export class User extends Model {
serialize() {......}
static deserialize(dbRow) {......return new User(......)}
someOtherMethod() {.....}
}
如何定义 Model.filter 以便const users = await User.filter({.....}) 自动推断用户类型为 User[]?现在,推断的类型是 Model[]。
我知道我可以做到const users = <User[]> await User.filter({....}),但我想知道是否有任何方法建议将 Model.filter 的返回类型作为类构造函数,以便正确推断子类的实例。
【问题讨论】:
标签: class typescript oop inheritance