构造函数的类型
在 TypeScript 中,我们可以用 interface 来描述类,同时也 interface 里特殊的 new() 来描述类的构造函数类型。使用方法如下:
// 用 INumber 来描述 NumberClass 的形状
interface INumber {
n: number;
double(n: number): number
}
// 构造一个 NumberClass 类
class NumberClass implements INumber {
constructor(public n: number) {
console.log('n is ' + n)
}
double(n: number) {
return 2 * n;
}
}
// 用 new() 来描述 NumberClass 的构造函数类型
interface INumberClassConstructable {
new(n: number): INumber
}
// 该方法接受一个类,并将之实例化,利用 INumberClassConstructable 就可以约束实例化时传递给 clazz 构造函数的参数是准确的
function buildNumber(clazz: INumberClassConstructable) {
return new clazz(1)
}