never 类型通常表示不会发生的类型,但是下面官方提供的泛型例子有点看不明白 never 的用途了。
type GetReturnType<Type> = Type extends (...args: never[]) => infer Return
? Return
: never;
这是一个泛型工具类,可以提取函数的返回值类型,但是函数的参数定义成 never 类型数组有些不懂了,看提供的例子,这个定义既能满足无参数函数,也能满足有参数函数。
type Num = GetReturnType<() => number>;
//type Num = number
type Str = GetReturnType<(x: string) => string>;
//type Str = string
type Bools = GetReturnType<(a: boolean, b: boolean) => boolean[]>;
//type Bools = boolean[]
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.