【发布时间】:2020-09-25 08:53:07
【问题描述】:
我正在尝试在 TypeScript 中构建一个对象工厂,其中生成的对象必须具有共同的基本类型,但我还没有弄清楚如何正确编码。
这是我当前的尝试,这是不正确的,因为 TypeScript 说 T 不能保证是 Base 类型。
class Base {
constructor() {}
}
class User extends Base {
constructor() {
super()
}
}
class Post extends Base {
constructor() {
super()
}
}
function buildObject<T extends Base>(type: typeof Base): T {
return new type()
}
我想我可以创建一个像 type BaseInstance<T> = T extends Base 这样的新类型来代替这里使用:
function buildObject<T>(type: typeof BaseInstance<T>): BaseInstance<T> {
return new type()
}
但是这个构造 type BaseInstance<T> = T extends Base 是无效的。
【问题讨论】:
-
使用
type: new() => T代替type: typeof Base作为buildObject参数。
标签: typescript