Búsqueda de sitios web

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

  }

Artículos relacionados