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

Raf*_*ves 5 javascript typescript ecmascript-6 angular

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

foo () : void {}

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

foo() {}

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

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

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

Ada*_*dam 7

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

foo(): void {
    return 'hello';
}
Run Code Online (Sandbox Code Playgroud)

你可以在 TypeScript playground 中看到这个例子。

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

最终它没有因为两者对你的代码的差异foo() {}foo(): void {}运行方式完全相同。最后,这只是跟踪变量并确保它们被正确使用的一种方式。以下是 TypeScript 如何将您的 TypeScript 示例转换为 JavaScript 的示例。

您可以在此处了解有关TypeScript 的更多信息。