【问题标题】:Typescript Return Type: void打字稿返回类型:无效
【发布时间】:2018-03-09 22:00:20
【问题描述】:

在 Typescript(在 Angular 项目中使用)中,对于不返回任何内容(void)的方法,以下哪个是最佳实践?

onSelect(someNumber: number): void {

}

onSelect(someNumber: number) {

}

我在不同的示例中看到了两种方式,但不确定将返回类型添加为 void 还是留空更好?

【问题讨论】:

    标签: angular typescript


    【解决方案1】:

    是否显式注释方法的返回类型完全是个人喜好,尤其是对于像void 这样的琐碎类型。

    您可能添加: void的原因:

    • 提高了清晰度 - 其他开发人员不必阅读方法主体来查看它是否返回任何内容
    • 更安全 - 如果您使用将代码从另一个函数移动到其中包含 return expr; 语句的函数中,TypeScript 将标记此错误

    您可能不会的原因:

    • 简洁 - 如果从上下文中清楚地知道返回类型应该是什么(例如,getLength() 几乎可以肯定返回 number),那么返回类型注释会有点嘈杂
    • 灵活性 - 如果您正在对此代码进行原型设计,但还不确定返回类型是什么,则将其保留下来可以让您更轻松地更改它

    【讨论】:

    • 添加:void 的另一个原因:静态分析工具可以更轻松地确定函数的输出、标记错误以及使用这些函数时的潜在错误。 (注意:如果较低级别的函数指定其输出类型,ReSharper/VS 有时会在大型代码库中提供更好的反馈,从而减少工具的负载。)
    • 注释anything不是“完全个人喜好”吗?最佳实践不是 more 注释吗? This eslint rule当然是这么认为的。
    【解决方案2】:

    记住规则:“void 是不显式返回任何内容的函数/方法的返回类型”

    无论你是否在函数/方法中使用“void”作为返回类型,如果没有明确的返回类型,它会自动推断为“void”返回类型

    【讨论】:

      【解决方案3】:

      另一个受益于 'void' 返回类型 IMO 的用例是单行箭头函数。

      // the second method has no body block, and implicitly returns the 
      // size of the internal array, which may not be the desired outcome
      // explicitly stating a :void return type would flag the bottom one
      // as an error
      add = (v: string):  => {this.list.push(v);};
      addAndReturnLengthOfList = (v: string):  => this.list.push(v);
      
      '''
      

      【讨论】:

        【解决方案4】:

        另一个原因是当您使用严格模式时。

        【讨论】:

          猜你喜欢
          • 2020-06-29
          • 2021-09-18
          • 2022-01-12
          • 1970-01-01
          • 2020-11-30
          • 2015-08-10
          • 2017-05-20
          • 2023-02-07
          • 2019-04-25
          相关资源
          最近更新 更多