首页 > 解决方案 > 在函数参数中传递用户定义的类型

问题描述

我有一个type这样的定义:

export type KlassConstructor = new (...args: any[]) => Klass;

还有一个像这样的另一个类 B 中的构造函数:

constructor(name: string, options?: any, construct?: KlassConstructor) {
  //
  if(construct)
  {
    (this.attr).state = new (construct)();
  }
  //
}

我需要初始化 B 传递进行construct一些初始化的参数。我想知道如何通过args导出类型中的定义来初始化类Klass

标签: javascripttypescript

解决方案


B 类期望“construct”参数是 KlassConstructor 的一个实例。

所以在调用 B 的构造函数之前,你可以创建一个 KlassConstructor 的实例。然后将其放入 B 的构造函数方法中。

像这样:

KlassConstructor k = new KlassConstructor(1,2,3);
B b = new B('name', {}, k);

我相信您也可以随时随地进行操作,例如:

B b = new B('name', {}, new KlassConstructor(1,2,3));

另外,我不确定它是否适用,但如果一个类从另一个类继承,您可以使用 super() 函数:

https://www.typescriptlang.org/docs/handbook/classes.html


推荐阅读