[英]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.