其他分享
首页 > 其他分享> > TS 之 泛型工厂

TS 之 泛型工厂

作者:互联网

来自官方文档

在TypeScript使用泛型创建工厂函数时,需要引用构造函数的类类型。比如,

function create<T>(c: {new(): T; }): T {
    return new c();
}
class BeeKeeper {
    hasMask: boolean;
}

class ZooKeeper {
    nametag: string;
}

class Animal {
    numLegs: number;
}

class Bee extends Animal {
    keeper: BeeKeeper;
}

class Lion extends Animal {
    keeper: ZooKeeper;
}

function createInstance<A extends Animal>(c: new () => A): A {
    return new c();
}

createInstance(Lion).keeper.nametag;  // typechecks!
createInstance(Bee).keeper.hasMask;   // typechecks!

标签:ZooKeeper,createInstance,TS,工厂,keeper,Animal,泛型,new,class
来源: https://www.cnblogs.com/chilli-with-fish/p/15307301.html