从通用返回类型推断出打字稿“从不”

时间:2021-04-08 11:16:13

标签: typescript

我有以下功能

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 类型是如何从这里的返回类型推断出来的。

如果有人可以向我解释为什么会这样 - 并可能提出修复建议,我将不胜感激!

0 个答案:

没有答案