繁体   English   中英

打字稿:卷曲括号作为函数参数

[英]Typescript: Curly braces as function parameter

我在检查Alfresco ADF的内容元数据组件时偶然发现了以下的typescript函数,我无法理解它:

private saveNode({ changed: nodeBody }): Observable<Node> {
  return this.nodesApiService.updateNode(this.node.id, nodeBody);
}

我不明白的是{ changed: nodeBody }

根据这个这个答案,花括号用于表示对象文字作为使用键/值对作为函数参数的方法。 但在这里它被用作参数。 如果这创建了一个对象,在我的理解中,这意味着changed是其属性的名称, nodeBody引用属性值。 但是这个对象分配给哪个变量,如何在方法体中引用它?

令我更加nodeBody是,在return语句中只使用了nodeBody 那么为什么它不能立即用作单个参数?

这种形式的投入的好处或用例是什么?

你的理解是正确的。

我看到它的方式,使用这种方法有两个主要好处,第一个是通过指定您的函数只能接受具有特定形状的参数而获得的明显的类型安全性。

function f({ a: b }) {
  return b;
}

f({a: 1}) // -> 1
f({c: 1}) // type error

第二件事就是不必在函数体中明确键入ab (在你的情况下为changed.nodeBody )多个类型的便利性。 在您的示例中,您只在return语句中使用nodeBody一次,但您可以轻松地想象多次使用该值的情况。

但是这个对象分配给哪个变量,如何在方法体中引用它?

在您的示例中,您可以在函数体中悄悄地使用nodeBody来引用参数对象的已changed键的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM