如何在Typescript中继承静态泛型方法

时间:2019-05-16 09:45:24

标签: typescript design-patterns

我无法编译Typescript代码,因为编译器似乎无法理解我的类之间的继承。

当我尝试编译时,我遇到了这个错误

Property 'create' does not exist on type 'new () => T'.

export abstract class Resource {

    // creates a new resource and returns it
    static async create<T>(this: { new(): T }, resource: T): Promise<T> {
      const resource = ... // using "this"
      return resource;
    }

}

export abstract class ContainerResource extends Resource {

  static async addToContainer<T>(this: { new(): T }, resource: T, containerId: string): Promise<T> {
    r = await this.create(resource); // Property 'create' does not exist on type 'new () => T'.

    // do some stuff

    return r;
  }

}

我除了这段代码要编译。即使使用addToContainer<T extends Resource>也无法使用:(

1 个答案:

答案 0 :(得分:0)

您通过“ this”引用静态方法。总是错的。尝试将“ this”替换为“ Resource”