不同类型的函数声明(foo():void {} vs foo(){})Angular2

时间:2017-03-07 17:41:49

标签: javascript angular typescript ecmascript-6

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

foo () : void {}

我的问题是......该声明与此之间的区别是什么?

foo() {}

我已经发现void是返回类型,但是如果你把例如字符串而不是void放在一起,那么两个函数都能够返回字符串。

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

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

1 个答案:

答案 0 :(得分:2)

类型声明是打字稿的一部分,并被烘焙到语言中。通常最好的做法是尽可能包含类型声明,包括foo(): void,因为它有助于捕获错误,例如:

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

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

上面显示了typescript转换器中的错误,并且让你知道你可能会在你没想到的时候返回一些东西。在这种情况下,这是因为没有预期的回报,但提供了一个。

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

您可以详细了解TypeScript here