Búsqueda de sitios web

análisis sintáctico - crear una nueva clase usando un nombre de cadena en TypeScript


Estoy escribiendo un cargador/analizador de XML (y soy nuevo en TypeScript), puedo cargar el XML sin problemas, sin embargo, estoy tratando de analizar dinámicamente los datos XML de nuevo en una clase/objeto. El problema es que me gustaría crear una clase usando una variable de tipo cadena; es decir, var classNameString:String="className";;

var newClass:any = new class(classNameString)

Por mis muchas búsquedas en internet, no parece posible, y voy a tener que codificar los nombres de las clases de forma fija. Cualquier ayuda sería muy apreciada.

Respuesta #1

Si tienes un espacio de nombres específico, para todas las clases que quieras crear, puedes hacer esto:

var newClass: any = new (<any>MyNamespace)[classNameString](parametersIfAny);

y si están en el espacio de nombres predeterminado, simplemente puedes usar window:

var newClass: any = new (<any>window)[classNameString](parametersIfAny);

Actualizar

Ahora necesitas tener la conversión <any> con la última versión de TypeScript o recibirás un Error TS7017 Build: Elemento tiene implícitamente un tipo 'any' porque el tipo '{}' no tiene una firma de índice.

Artículos relacionados