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

亚当·汤普森

如果我具有以下基本功能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进行推断?但是在那种情况下,您何时应该真正使用显式返回类型呢?

芬顿

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

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

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

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';
    }
}

我的返回类型为now number | string | undefined

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

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

返回类型错误

在严格模式下,它可以确保您每次都返回一些内容。

缺少退货(严格模式)

*如果您需要其他帮助,则还将打开所有严格的要求

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我们什么时候需要在信号处理程序中再次建立信号函数?

什么时候需要在zsh小部件调用的函数中包含“模拟-LR zsh”?

为什么要在TypeScript中声明“ any”返回类型?

什么时候需要在clojure中包括撇号?

什么时候需要在组件中调用removeEventListener?

Swift中什么时候需要或需要通用函数?

什么时候需要显式调用 std::move ,什么时候不需要在 cpp 中?

什么时候需要全局声明?

什么时候可以省略Kotlin中的返回类型

什么时候需要在lambda表达式中指定参数类型

到底什么时候需要类型转换?

什么时候需要类型注释?

什么时候需要返回嵌套的 promise?

什么时候需要默认构造函数?

什么时候以及为什么要在JavaScript中“返回假”?

函数什么时候可以返回引用?

什么时候需要在容器中运行Java应用程序?

什么时候需要在Chapel稀疏矩阵中包含LayoutCS?

什么时候需要在Java中初始化变量?

什么时候需要在if语句周围加上括号来控制R中公式的顺序?

我什么时候需要在 Scala 中向我的类添加成员定义?

什么时候需要在helib中进行引导?

什么时候需要在EF的DbContext中指定DbSet?

什么时候需要在Ruby中使用模块?

什么时候需要在Java中使用AtomicBoolean?

什么时候需要在 MailKit 上启用 SSL

Typescript从参数返回函数的类型

PowerShell > 为什么我需要在函数返回值之前在函数中内联声明函数参数?

什么时候需要.NET中的SecureString?