typescript-动态的新类对象名称

时间:2019-09-09 11:05:01

标签: node.js typescript

我需要循环创建一个新的类对象,在其中可以提供此类的动态名称,例如我有“树”课:

export default class ParentClass {
    // ...
}

export default class Thomas extends ParentClass {
    // ...
}

export default class Paul extends ParentClass {
    // ...
}

并循环:

const workers = ['Thomas', 'Paul'];
for (const worker of workers) {
    const h = new <worker>();
    // do something with this object
}

是否可以这样做?使用NodeJS和Express.js进行项目。

2 个答案:

答案 0 :(得分:2)

这是可能的,您可以将类构造函数直接放在数组中:

const workers = [Thomas, Paul];
for (const workerConstructor of workers) {
  const h = new workerConstructor();
  // do something with this object
}

或者,将它们放在地图中,以便您可以使用字符串键访问它们:

const classMap = {
  'Thomas': Thomas,
  'Paul': Paul
}

const workers = ['Thomas', 'Paul'];
for (const workerKey of workers) {
  const h = new classMap[workerKey]();
  // do something with this object
}

答案 1 :(得分:0)

您可以执行以下操作:

const workers = ['Thomas', 'Paul'];
for (const worker of workers) {
    let c;
    eval("c=new "+worker+"()");
    // do something with this object
}
相关问题