TypeScript手册中`never[]`参数类型的含义及示例使用疑问
关于TypeScript中
never[]参数类型的含义及示例中的使用原因 一、never[]的含义
never是TypeScript的底层类型,用来表示永远不会被赋值的类型,比如抛出异常、无限循环的函数返回值,或是永远不会执行到的代码分支的类型。never[]是元素类型为never的数组,这种数组只能是空数组[]——因为没有任何值能符合never类型的要求,所以你无法向never[]中添加任何元素。
二、示例中使用never[]的原因
这个GetReturnType类型的核心目的是提取任意函数的返回值类型,完全不关心函数的参数是什么。在条件类型的模式Type extends (...args: never[]) => infer Return中:
(...args: never[])只是用来占据函数参数列表的位置,明确我们要匹配的是“函数类型”这个结构,而非具体的参数类型。- 选择
never[]而非any[]或其他类型,是因为never是最严格的类型,不会引入任何意外的类型兼容问题,同时清晰传达了“我们不需要捕获或使用参数类型”的意图——毕竟never[]无法适配任何非空参数列表,这里只是用它做模式匹配的占位符,让TypeScript专注于推断函数的返回值部分。 - 举个例子,当我们传入
(x: string) => string时,TypeScript会自动忽略参数x: string的细节,只匹配“函数”这个结构,然后推断出返回值是string,最终Str的类型就是string。
内容的提问来源于stack exchange,提问作者NeoZoom.lua
相关产品推荐
相关产品推荐

