我有以下功能
export default function convertFilterToPrimitiveType<TFilterKey extends keyof Filters>(
filterKey: TFilterKey,
filterValue: FilterOption | [FilterOption]
): Filters[TFilterKey] {
// body
}
以下类型
type Filters = {
sortBy: string;
someOther: number[]
bool: boolean;
}
所需的类型检查如下:
filterKey
键convertFilterToPrimitiveType('sortBy', {...}) // string
convertFilterToPrimitiveType('someOther', {...}) // number[]
convertFilterToPrimitiveType('bool', {...}) // bool
很简单。
但是我在尝试返回任何内容时遇到错误。
这是一个简单的例子
if (filterKey === 'sortBy') return 'test'
我收到以下错误
Type '"test"' is not assignable to type 'Filters[TFilterKey]'.
Type 'string' is not assignable to type 'never'
我不明白 never
类型是如何从这里的返回类型推断出来的。
如果有人可以向我解释为什么会这样 - 并可能提出修复建议,我将不胜感激!