对类使用通用类型-类型T不满足约束条件

时间:2018-09-04 23:18:49

标签: typescript tsc typescript3.0

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 :(得分:1)

由于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 }>设置为自己的类型。