在C#中,你可以这样做:
class ItemFactory<T> where T : new()
{
public T GetNewItem()
{
return new T();
}
}
在打字稿中,我所设想的最接近的是:
class ItemFactory<T>{
instantiatibleModel : new() => T;
constructor(modelWithctor : { new(): T }){
this.instantiatibleModel = modelWithctor;
}
GetNewItem() : T{
return new this.instantiatibleModel();
}
}
任何想法如何让它更清洁/更接近C#语法?
答案 0 :(得分:0)
您希望这适用于所有课程吗?如果你有一个超级基类,可以用一种简单的方式完成。
class Base {
hi() {
alert('base');
}
}
class Derived extends Base {
hi() {
alert('Der');
}
}
class Gen<T extends Base >{
constructor(private testType) {
}
create<T>(): T {
return new this.testType();
}
}
var g=new Gen<Derived>(Derived);
var obj= g.create();