构造函数的类型

在 TypeScript 中,我们可以用 interface 来描述类,同时也 interface 里特殊的 new() 来描述类的构造函数类型。使用方法如下:

  1. // 用 INumber 来描述 NumberClass 的形状
  2. interface INumber {
  3. n: number;
  4. double(n: number): number
  5. }
  6. // 构造一个 NumberClass 类
  7. class NumberClass implements INumber {
  8. constructor(public n: number) {
  9. console.log('n is ' + n)
  10. }
  11. double(n: number) {
  12. return 2 * n;
  13. }
  14. }
  15. // 用 new() 来描述 NumberClass 的构造函数类型
  16. interface INumberClassConstructable {
  17. new(n: number): INumber
  18. }
  19. // 该方法接受一个类,并将之实例化,利用 INumberClassConstructable 就可以约束实例化时传递给 clazz 构造函数的参数是准确的
  20. function buildNumber(clazz: INumberClassConstructable) {
  21. return new clazz(1)
  22. }