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

时间:2018-12-07 00:27:17

标签: javascript typescript static-analysis typing

如果我具有以下基本功能,typescript可以自动推断返回类型。

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

如果typescript由于其他调用正在泄漏any而无法推断出返回类型,因此无法做出正确的推断,那么声明返回类型是否有用?

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

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

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

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

1 个答案:

答案 0 :(得分:1)

我打开noImplicitAny并避免在几乎所有情况(函数除外)中添加类型注释。为什么?因为我不想在以下情况下意外返回联合类型:

  1. 我忘了返回一个值
  2. 我返回了错误类型的值

例如,如果我开始的时候,我的日子会有所不同:

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

vs

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

这是接下来发生的事情...

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

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

我的返回类型现在为number | string | undefined

如果我使用返回类型注释,则会获得其他帮助*。

它可以帮助您返回正确的类型:

Wrong return type

在严格模式下,它确保您每次都返回一些东西。

Missing return (strict mode)

* 如果您需要其他帮助,还可以打开所有严格的条件