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
}
