使用带类的泛型类型 - 类型T不满足约束

问题描述 投票:0回答:1
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

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

typescript tsc typescript3.0
1个回答
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 }>成为自己的类型。

© www.soinside.com 2019 - 2024. All rights reserved.