簡體   English   中英

在TypeScript中調用泛型類型的構造函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM