Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get a class from a string in TypeScript/JavaScript in an Angular 2 application?

In my application, I have something like this:

user.ts

export class User { ... }

and right now, I do this:

app.component.ts

callAnotherFunction(User);

How can I do this if I have the class name as a string, that is "User"? If possible, how would I check if the variable really is a usable class?

For example:

let test = "User";

if (**test is really a usable class**) {
    console.log("Yay!");
    callAnotherFunction(**something to put here**);
} else {
    console.log("Error!");
}

I am not sure if this is even possible, but thanks for your input already.


All I have found so far is examples like these:

let test = "User";
let user = new window[test]();

But user would then be an instance of User. Additionally, it does not seem to work in my Angular 2 application - probably a scope error. If I wanted to try this, what would I need to use instead of window?

like image 862
andreas Avatar asked Oct 04 '16 22:10

andreas


1 Answers

This sounds like a reflection question in typescript.

Possibly you could check this out if you haven't

Dynamically loading a typescript class (reflection for typescript)

like image 183
Nico Avatar answered Oct 20 '22 00:10

Nico