网站搜索

node.js - typescript - 动态新类对象名称


我需要在循环中创建新的类对象,并且可以提供该类的动态名称,例如,我有一个类“tree”:

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 的项目。

答案#1

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

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
}

答案#2

你可以这样做:

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