【问题标题】:Why does Typescript lambda function gets broken by curly braces?为什么 Typescript lambda 函数会被花括号破坏?
【发布时间】:2016-09-04 02:00:57
【问题描述】:

不久前我开始开发 Typescript 和 C#,而以前我的大部分开发都是使用 javascript+php。 我正在开发一个 Angular 2 应用程序,并创建了一个 HTTP 服务。 我在这里讨论的问题更多地与 Typescript 相关,而不是 Angular 2。

在以下代码中:

 export class HttpRest{
 constructor(
        private _http: Http,
        private userIdsx: UserIds,
        private _jsonFormater: JsonFormater
 ){}
 ...
 getGroupsList(){
    return this._http.get('file.json')
        .map(res => res.json());
 }
...
}

我正在使用一条语句传递一个匿名 lambda 函数,并且我想添加花括号来创建函数范围,但是当我这样做时,事情就会被破坏。

我正在尝试重构:

.map(res => res.json());

收件人:

.map((res) => {
    res.json()
});

所以我可以做更多的操作,但这会破坏代码并导致 res.json() 定义的 JSON 对象上出现未定义的错误。

问题是,为什么添加花括号会破坏这个简单的功能? 带有作用域花括号的 lambda 函数不是语言的内置特性吗?

【问题讨论】:

    标签: javascript json typescript angular


    【解决方案1】:

    使用以下内容。你需要退货。

    .map((res) => {
      return res.json()
    });
    

    使用简洁的正文版本(没有大括号),它已经隐式完成了......

    【讨论】:

    • 感谢这解决了它,我没有意识到返回值也可以被隐式推断,这在我看来是一种不好的做法。
    猜你喜欢
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多