Использование универсального типа с классом - тип T не удовлетворяет ограничению - PullRequest
0 голосов
/ 05 сентября 2018
export type OptionsToType<T extends Array<{ name: Array<string>, type: keyof TypeMapping }>>
  = { [K in T[number]['name'][0]]: TypeMapping[Extract<T[number], { name: K }>['type']] }


export class CliParser<T> {

  opts: OptionsToType<T>;

  constructor() {

  }

}

Я получаю эту ошибку:

enter image description here

Кто-нибудь знает, как это исправить?

1 Ответ

0 голосов
/ 05 сентября 2018

Поскольку T может быть любого типа на CliParser, он слишком широк для OptionsToType. Вы можете ограничить это, выполнив:

export class CliParser<T extends Array<{ name: Array<string>, type: keyof TypeMapping }>> {

  opts: OptionsToType<T>;

  constructor() {

  }

}

Определенно немного некрасиво. Вы можете сделать Array<{ name: Array<string>, type: keyof TypeMapping }> своим собственным типом.

...