piernik
piernik

Reputation: 3657

How to create class instance using class as variable?

In typescript I pass whole class as reference MyClass to a function. How to create new instance of that class in that function?

export class MyClass {
}

createClass(MyClass);

function createClass(classReference) {
   const classInstance = new classReference();//not working
}

I need it because in angular's ModuleWithProviders I cannot call new MyClass().

Upvotes: 1

Views: 83

Answers (2)

Nitzan Tomer
Nitzan Tomer

Reputation: 164129

It should look like this:

function createClass<T>(classReference: { new (): T }): T {
   return new classReference();
}

let a = createClass(MyClass); // type of a is MyClass

(code in playground)

Upvotes: 2

0mpurdy
0mpurdy

Reputation: 3353

In your ModuleWithProviders you could instead use:

{ provide: ProviderToReplace, useClass: MyClass }

See more here

Upvotes: 0

Related Questions