函数返回类型是否属于函数类型?两类函数的类型判定疑问
TypeScript函数类型解析
1. 常规函数的类型
对于定义如下的常规函数:
function regularFunction(): void {}
它的类型既不是void,也不是仅Function:
void是该函数的返回值类型,而非函数本身的类型。Function是通用的宽泛函数类型,代表任意函数,但TypeScript会为这个常规函数推断出更具体的类型:() => void(无参数、返回值为void的函数类型)。你也可以手动指定它的类型为Function,但这会丢失参数和返回值的具体类型信息。
2. 命名函数的类型
对于定义如下的命名函数表达式:
const namedFunction = function (): void {};
它的类型是() => void,也就是你所说的“自身包含的类型”:
void仅为返回值类型,并非函数本身的类型。Function是更宽泛的通用类型,TypeScript会优先推断出精确的() => void类型,除非你手动指定为Function。
简单总结:不管是函数声明还是函数表达式,TypeScript都会根据其参数和返回值推断出对应的具体函数类型(比如() => void),void只是返回值的类型,Function是通用的宽泛类型。
内容的提问来源于stack exchange,提问作者Rock_n_Roll_CRC
相关产品推荐
相关产品推荐

