【问题标题】:Calling constructor of generic type in TypeScript在 TypeScript 中调用泛型类型的构造函数
【发布时间】:2019-09-19 14:22:51
【问题描述】:

我有以下代码:

  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 中调用泛型类型的构造函数?

【问题讨论】:

    标签: angular typescript ionic-framework ionic3


    【解决方案1】:

    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是一个接口,那么服务器返回的对象大概会满足这个接口,不需要再做任何事情/

    【讨论】:

      猜你喜欢
      • 2019-05-04
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      • 2021-08-17
      • 2018-09-21
      • 1970-01-01
      • 2010-10-16
      • 2016-04-05
      相关资源
      最近更新 更多