ключ этого в аргументе опций - PullRequest
1 голос
/ 08 апреля 2020

В сигнатуре типа метода тип keyof this может использоваться для ограничения аргумента в качестве строкового имени действительного ключа класса. Однако он не работает, если метод принимает стиль параметров, а не позиционные аргументы. то есть:

class Foo {
  // Allowed
  m1(a: string, b: keyof this) {
    ...
  }

  // Error: A 'this' type is available only in a non-static member of a class or interface
  m2(options: {a: string, b: keyof this}) { 
    ...
  }
}

Есть ли способ обойти это? Спасибо.

1 Ответ

1 голос
/ 08 апреля 2020

Да, вы можете извлечь options тип и передать this в качестве универсального c параметра:

type Options<T> = { a: string, b: keyof T };

class Foo {
    m2(options: Options<this>) {}
}

Детская площадка

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