什么时候需要在 TypeScript 中声明 return 函数类型?

When is it necessary to declare return function type in TypeScript?

如果我有下面的基本函数typescript可以自动推断出return类型

function myFunction(x: number, y: number) {
  return x * y;
}

是否只有在 typescript 无法推断 return 类型时声明 return 类型才有用,因为其他一些调用正在泄漏 any 因此它无法做出正确的选择推论?

function myFunction(x: number, y: number) {
  return x * y || callThatReturnsAny();
}

在这种情况下,如果我知道 callThatReturnsAny() return 是 number

,我想输入它
function myFunction(x: number, y: number): number {
  return x * y || callThatReturnsAny();
}

尽管最好的解决方案是键入 callThatReturnsAny() 以便 typescript 可以进行推断?但在那种情况下,你什么时候应该真正使用显式 return 类型?

我打开 noImplicitAny 并避免在几乎所有情况下添加类型注释,函数除外。为什么?因为我不想不小心 return 联合类型 when:

  1. 我忘记return一个值
  2. 我return一个错误类型的值

例如,如果我从以下方面开始,我的一天会有所不同:

function example(a: number, b: number) {

function example(a: number, b: number): number {

接下来会发生什么...

function example(a: number, b: number) {
    if (a > 5) {
        return 5;
    }

    if (b > a) {
        return 'b';
    }
}

我的 return 类型现在是 number | string | undefined

如果我使用 return 类型注释,我会得到额外的帮助*。

它可以帮助您 return 正确输入:

在严格模式下,它确保你每次都return一些东西。

* 如果您需要额外的帮助,您还可以打开所有严格的东西