我有一个泛型类,需要创建一个带有一些参数的实例。我发现如何创建一个空的构造函数的实例,但是当我尝试重载它时,我得到一个错误:'ERROR TypeError:rowObj不是构造函数'如何用typescript中的参数创建<T>的实例?
这是旧的代码工作(但具有空的构造函数) :
export class DataTableViewModel<TRow extends DataTableRowViewModel> {
public rowsViewModel: TRow[];
public totalItemsCount: number;
constructor(dateService: DateService, rows?: any[]) {
this.rowsViewModel = [];
if (rows) {
rows.forEach((row) => {
let obj = Object.getPrototypeOf(Object.create(row) as TRow);
this.rowsViewModel.push(obj);
});
}
}
}
这里是我努力使工作的新代码:
export abstract class DataTableViewModel<TRow extends DataTableRowViewModel> {
public rowsViewModel: TRow[];
public totalItemsCount: number;
constructor(dateService: DateService, rows?: { new(): any }[]) {
this.rowsViewModel = [];
if (rows) {
let rowObj: { new(dateService: DateService, rows?: any): TRow };
rows.forEach((row) => {
let obj = new rowObj(dateService, row);
this.rowsViewModel.push(obj);
});
}
}
}
什么是DataTableRowViewModel?它的构造函数的签名是什么? – jcalz
@jcalz现在只是一个空的类,没有任何声明的构造函数 – Igor