gpt4 book ai didi

typescript - 为什么我的 Typescript 函数中缺少 void 隐式返回类型?

转载 作者:行者123 更新时间:2023-12-03 07:51:24 25 4
gpt4 key购买 nike

考虑这个函数:

function foo(check: boolean){
if(check){
return 123;
}
}

为什么隐式返回类型只有number而不是number |无效

Stackblitz:https://stackblitz.com/edit/typescript-jwy5xn?file=index.ts

最佳答案

在 TypeScript 中,函数的隐式返回类型由 TypeScript 编译器根据函数体内的实际代码确定。在您的示例函数 foo 中,TypeScript 推断返回类型为 number |未定义,而不是number |无效

原因如下:

  1. TypeScript 的类型推断会考虑函数体中的实际返回语句。在您的函数中,您在 if block 内有一个条件返回语句 return 123;。 TypeScript 识别 return 语句是有条件的,如果不满足条件,函数可能不会返回任何内容。

  2. 当函数没有针对所有可能的代码路径的 return 语句时,TypeScript 会将返回类型推断为 undefined。这是因为在 JavaScript/TypeScript 中,如果函数没有显式返回值,就好像它返回 undefined

  3. 当您使用 if (check) 条件时,TypeScript 会理解,如果 checkfalse,则没有显式 返回语句。因此,它将返回类型推断为 number |未定义

如果您想明确返回类型(包括 void),您可以在函数签名中显式指定它,如下所示:

function foo(check: boolean): number | void {
if (check) {
return 123;
}
// No return statement for the `else` case, which implies `void`.
}

在此修改后的函数签名中,您明确声明该函数可以返回 numbervoid

关于typescript - 为什么我的 Typescript 函数中缺少 void 隐式返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77041566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com