javascript - Angular2 typescript crear un nuevo objeto dinámicamente con el nombre de la clase desde una variable?
Intenté expresar de alguna manera:
export class SomeComponent {
constructor() {
let className: string = "TheClass";
/* should be the same as .. = new TheClass() */
let superSpecial = new className();
}
}
Aún no he averiguado cómo hacer esto. ¿Alguien podría ayudarme?
Respuesta #1
Hay varias formas de hacer esto. Si tu clase está en un módulo separado:
SomeClass.ts
export class SomeClass {
constructor(arg: string) {
console.log(arg);
}
}
App.ts
import * as s from "./SomeClass";
var instance = new s["SomeClass"]("param");
O usando espacios de nombres:
namespace Test {
export class SomeClass {
constructor(arg: string) {
console.log(arg);
}
}
}
var instance = new Test["SomeClass"]("param");
Respuesta #2
Esto funcionará para ti
export class SomeComponent {
constructor() {
// suppose TheClass is the imported class name you want to instantiate
let className: typeof TheClass = TheClass;
/* should be the same as .. = new TheClass() */
let superSpecial = new className(); // you "new" it as normal
}
