[英]Calling constructor of generic type in TypeScript
我有以下代碼:
public getProducts<T>(): Observable<T[]> {
return this.httpClient
.get<T[]>(this.baseUrl + '/users')
.pipe(
map((entities) => {
return entities.map((entity) => {
return new T(entity);
})
}),
catchError((err) => Observable.throw(err))
);
}
這行給我一個錯誤: return new T(entity)
;
如何在TypeScript中調用泛型類型的構造函數?
T
只是一個類型,類型會在運行時刪除,因此類型永遠不會出現在表達式中。
您需要做的是傳遞T
的構造函數。
public getProducts<T>(ctor: new (p: Partial<T>) => T): Observable<T[]> {
return this.httpClient
.get<T[]>(this.baseUrl + '/users')
.pipe(
map((entities) => {
return entities.map((entity) => {
return new ctor(entity);
})
}),
catchError((err) => Observable.throw(err))
);
}
這意味着您有一個為T
定義的類。 如果沒有課程,那就不要再理new T
。 如果T
是一個接口,則服務器返回的對象可能會滿足該接口,並且無需執行其他操作/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.