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