Typescript 类型脚本对象工厂
我试图在TypeScript中构建一个对象工厂,其中生成的对象必须有一个公共的基类型,但我还没有弄清楚如何正确编码它 这是我当前的尝试,它是不正确的,因为TypeScript说T不能保证是Base类型Typescript 类型脚本对象工厂,typescript,Typescript,我试图在TypeScript中构建一个对象工厂,其中生成的对象必须有一个公共的基类型,但我还没有弄清楚如何正确编码它 这是我当前的尝试,它是不正确的,因为TypeScript说T不能保证是Base类型 class Base { constructor() {} } class User extends Base { constructor() { super() } } class Post extends Base { constructo
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()
}
类基{
构造函数(){}
}
类用户扩展基{
构造函数(){
超级()
}
}
类职位扩展基础{
构造函数(){
超级()
}
}
函数buildObject(类型:typeof Base):T{
返回新类型()
}
我想我可以创建一个新类型,比如typebaseinstance=T extends Base
,在这里使用:
function buildObject<T>(type: typeof BaseInstance<T>): BaseInstance<T> {
return new type()
}
函数buildObject(类型:typeof BaseInstance):BaseInstance{
返回新类型()
}
但是此构造
type BaseInstance=T extends Base
无效。尝试定义一个可以通过new
关键字调用的类型BaseConstructor,并返回一个Base实例。您的类Base、User和Post都满足此类型定义
type BaseConstructor<T extends Base> = new() => T;
function buildObject<T extends Base>(type: BaseConstructor<T>): T {
return new type();
}
const myObj: Post = buildObject(Post);
type BaseConstructor=new()=>T;
函数buildObject(类型:BaseConstructor):T{
返回新类型();
}
constmyobj:Post=buildObject(Post);
使用type:new()=>T
而不是type:typeof Base
作为buildObject
参数。