I am trying to create instance from generic type T
for example,
class Factory {
public static generate<T>(): T {
return new T();
}
}
But since T
is just a type not constructor, we can't do that.
Is it impossible to create an instance from a generic type in TypeScript?
I'v also read these articles but could not found a solution.
The type information used in TypeScript is erased before runtime, so the information about T
is not available when you make the call to new T()
.
That's why all of the alternate solutions depend upon the constructor being passed, such as with this example of creating a class dynamically:
interface ParameterlessConstructor<T> {
new (): T;
}
class ExampleOne {
hi() {
alert('Hi');
}
}
class Creator<T> {
constructor(private ctor: ParameterlessConstructor<T>) {
}
getNew() {
return new this.ctor();
}
}
var creator = new Creator(ExampleOne);
var example = creator.getNew();
example.hi();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With