Typescript中的Lambda表现很奇怪

问题描述 投票:0回答:2

我在大型课程中有以下陈述:

array.map(seq => this.mFunction(seq));

此文件将在tsc命令的帮助下编译为:

array.map(function (seq) { return _this.mFunction(seq); });

好吧,看起来不错...但是,为什么呢:

array.map(seq => { this.mFunction(seq); });

编译为:

array.map(function (seq) { _this.mFunction(seq); });

我实际上在一个项目中遇到问题,该项目的第一种书写方式尚可,但第二种使网页以多种方式中断(我正在使用Angular)...我一直以为它们是完全一样的。

这是从我的tsconfig:

"module": "es2015",
"moduleResolution": "node",
"target": "es5"
javascript node.js typescript ecmascript-5
2个回答
0
投票

如果您的lambda主体未用大括号括起来,则该主体被视为要返回其值的表达式,因此TypeScript添加一个return关键字。如果lambda主体用大括号括起来,则该主体被视为要执行的语句块,并且您有责任包括任何必要的return关键字。


0
投票

第一个版本,一个单线箭头函数,由于没有在函数主体周围使用{},因此具有隐式返回。

因此,第二个版本必须为array.map(seq => { return this.mFunction(seq); });,以等同于第一个版本。

© www.soinside.com 2019 - 2024. All rights reserved.