parsing - skapa en ny klass med hjälp av ett strängnamn i typescript


Jag skriver en XML-läsare/parser (och är ny på TypeScript), jag kan läsa XML-filen utan problem, men jag försöker dynamiskt analysera XML-data tillbaka till en klass/objekt. Problemet är att jag skulle vilja skapa en klass med hjälp av en strängvariabel; dvs var classNameString:String="className";;

var newClass:any = new class(classNameString)

Från mina många sökningar på internet verkar det inte vara möjligt, och jag kommer att behöva hårdkoda klassnamnen. All hjälp skulle uppskattas mycket.

Svar #1

Om du har ett specifikt namnrym, för alla klasser du vill skapa, kan du göra så här:

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

och om de finns i standardnamnområdet kan du helt enkelt använda window:

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

Uppdatera

Du måste nu ha <any>-typen med senaste TypeScript, annars får du Error TS7017 Build:Element implicitly has an 'any' type because type '{}' has no index signature.

Relaterade artiklar