Как наследовать статические обобщенные методы в Typescript - PullRequest
0 голосов
/ 16 мая 2019

Я не могу скомпилировать код 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 голосов
/ 16 мая 2019

Вы ссылаетесь на статический метод через "this". Это всегда неправильно. Попробуйте заменить "this" на "Resource"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...