泛型“New”约束等效于 TypeScript
本文关键字:TypeScript 约束 New 泛型 | 更新日期: 2023-09-27 18:33:50
在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# 语法?
您希望它适用于所有类吗?如果你有一个超级基类,可以用简单的方式完成。
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();