我有一個泛型類,需要創建一個帶有一些參數的實例。我發現如何創建一個空的構造函數的實例,但是當我嘗試重載它時,我得到一個錯誤:'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