【问题标题】:Different types of function declaration (foo () : void{} vs foo() {}) Angular2不同类型的函数声明(foo () : void{} vs foo() {})Angular2
【发布时间】:2017-07-28 01:02:45
【问题描述】:

所以当我在他们的 (angular.io) 教程页面上发现这个函数声明时,我正在做一些关于 angular 2 的教程:

foo () : void {}

我的问题是……那个声明和这个有什么区别?

foo() {}

我发现 void 是返回类型,但如果你把例如字符串而不是 void 两个函数都能够返回字符串。

那么真正的区别是什么?最佳实践是什么? (我倾向于说第一个,只是不知道为什么)。

那是 Javascript、TypeScript、ES6 还是 Angular2 的东西?以前从未见过。

【问题讨论】:

  • 这是typescript
  • 第一个是Typescript,第二个是ES6。
  • 真的吗?否决票?嘘。
  • 感谢您的快速回答:)

标签: javascript angular typescript ecmascript-6


【解决方案1】:

类型声明是打字稿的一部分,并融入了语言。通常最好的做法是尽可能包含类型声明,包括 foo(): void,因为它有助于捕获以下错误:

foo(): void {
    return 'hello';
}

You can see this example in practice in the TypeScript playground.

上面显示了打字稿转译器中的一个错误,并让您知道您可能会在您不期望的情况下返回某些内容。在这种情况下,这是因为没有预期的回报,但提供了一个。

最终它不会对您的代码产生影响,因为 foo() {}foo(): void {} 将以完全相同的方式运行。最后,它只是一种跟踪变量并确保它们被正确使用的方法。 Here is an example of how TypeScript transpiles your TypeScript example into JavaScript.

您可以了解更多关于TypeScript here的信息。

【讨论】:

  • 非常感谢答案的细节。
  • 完全没问题。欢迎使用 StackOverflow。
  • @RafaelChaves 顺便说一句,我认为您的问题非常好。不知道为什么有人投了反对票,但你已经被介绍到 SO 的一个主要陷阱。他们允许人们无缘无故地投票,非常愚蠢。
猜你喜欢
  • 2012-10-17
  • 2020-06-16
  • 2012-04-04
  • 2020-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-21
  • 1970-01-01
相关资源
最近更新 更多