gpt4 book ai didi

angular - typescript :花括号作为函数参数

转载 作者:太空狗 更新时间:2023-10-29 18:35:26 27 4
gpt4 key购买 nike

我在检查 content metadata component 时偶然发现了以下 typescript 函数Alfresco ADF,我无法理解它:

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

我不明白的是 { changed: nodeBody }

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

更让我困惑的是,返回语句中只使用了nodeBody。那为什么不立即将其用作单个参数呢?

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

最佳答案

你的理解是正确的。

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

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

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

第二件事就是不必在函数主体中显式键入 a.b(在您的情况下为 changed.nodeBody)多个类型,这很方便。在您的示例中,您只在 return 语句中使用了一次 nodeBody,但您可以轻松想象多次使用该值的情况。

But which variable is this object assigned to and how can you refer toit in the method body?

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

关于angular - typescript :花括号作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55950522/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com