跳至主要內容

构造函数签名,用于实现函数工厂

Entity小于 1 分钟

构造函数签名,用于实现函数工厂

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!

构造器签名

// 字面量方式构造器签名
const myClass1: new (n:string, a:number) => Person = Student;
// 接口方式构造器签名
const myClass2: {new (n:string, a:number) : Person} = Teacher;