将通用类型与 class 一起使用 - 类型 T 不满足约束

Using generic type with class - type T does not satisfy the constraint

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() {

  }

}

我收到这个错误:

有人知道如何解决这个问题吗?

因为 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 }> 成为自己的类型。