问题标签 [object-destructuring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
60 浏览

javascript - ES6 如何在不分配变量的情况下使用对象解构

也许是一个奢侈的问题,但我正在寻找将对象参数选择传递给函数的最优雅的方式。这就是我想要实现的目标:

目前我正在使用这种解决方案:

对我来说,初始化参数然后创建一个新对象似乎有点麻烦。我想当大规模使用时,这也可能与性能问题有关?

所以我的问题实际上是关于对象解构的:解构运算符实际上返回了什么?引擎盖下发生了什么?它如何用作简单的oneliner?(文献和链接也非常感谢:D)

0 投票
2 回答
380 浏览

javascript - 打字稿中的对象解构

是否可以在没有 Typescript 抱怨的情况下解构来自函数调用的对象?

文件 1

  • 反应组件 1
  • 反应组件 2

在这里,我从 Typescript 收到以下抱怨

  • 类型“null”上不存在属性“key1”。
  • 类型“null”上不存在属性“key2”。

如何删除这些警告?

0 投票
2 回答
81 浏览

javascript - React useState hook:对象属性保持不变

我最近开始学习 react 并且我有一个包含登录表单的组件:

在这里,我试图在错误对象中设置用户名和密码的值,但由于某种原因,只设置了密码属性,用户名属性保持为空。我已经使用了对象解构,但它仍然没有设置值,请帮助。

0 投票
0 回答
62 浏览

javascript - 有没有办法解构一个 regex.groups 对象,输入一个元素 string|boolean 而不是推断的字符串?

我在 TypeScript 中有一个 RegExp,其中有一些组
我试图将其破坏为具有不同名称的变量。
这就是它的外观:

它推断和first的类型。secondthirdstring

我只想second保持“第二组在场”状态,second所以我确实second = !!second要得到 a boolean,但这不会让我这样做,因为second是 a string。所以我希望second能够保持一个布尔值。(类型string|boolean:)

我知道我可以让它与更多行一起工作:

我还可以创建一个只保存布尔值的新变量,如下所示:

但是没有办法让它在破坏语句 中更改boolean或设置它的类型吗? 两者都不string|booleanlet

也不

工作。

0 投票
1 回答
36 浏览

javascript - 为 const 对象的属性赋值是否会产生 typeError?

为什么上面的代码会产生以下错误?

PS:请忽略行号。

我尝试更改const datalet data并发生相同的错误。

0 投票
2 回答
174 浏览

typescript - 将类型断言与解构赋值一起使用的最佳方法是什么?

我有一些使用解构赋值的代码,如下所示:

根据TypeScript 类型断言文档,我想使用as关键字来告诉 TS 编译器project始终是 type Project

什么是正确的语法?我试过了:

但这是无效的。

0 投票
1 回答
122 浏览

javascript - 当至少一个已经声明并且至少一个没有声明时,我可以解构为多个变量吗?

我知道我可以将一个对象或数组解构为多个变量,无论它们都已分配还是未分配,但是当至少一个变量已经被声明时,是否可以一起重构多个变量,并且至少一个有没有?

1. 两者都未分配

这有效✅</p>

2. 均已分配

这也有效✅</p>

3. 至少一项已分配,一项未分配

这不起作用

我在这里使用的实际用例与此类似——我有一个 URL 路径,我想将其拆分为具有相同变量名及其查询字符串的路径(如果存在的话)。

这是我想做的,但出于同样的原因它不起作用。

到目前为止,这是我提出的一些解决方法,但它们要么迫使我运行该函数两次,要么将单个赋值行分成三个单独的行,并声明一个新变量只是为了重新赋值:

解决方法 #1:执行函数两次

解决方法 #2:声明临时变量

0 投票
1 回答
142 浏览

javascript - 对象解构花括号内的等号

我在 Graphql 指令定义中看到了这条语句:

我知道这部分const { resolve } = field;意味着获取对象resolve的属性field并将其存储在局部变量resolve中。但我第一次遇到的是这个= defaultFieldResolver部分。等号在这里做什么?我已经完成了彻底的谷歌搜索,但也许我不知道要搜索的正确关键字,或者这可能是新事物。

这是我看到这个的文章的链接。

谢谢一堆。

0 投票
1 回答
74 浏览

node.js - 从中间件响应中解构赋值对象

我创建了一个如下中间件:

oauth 函数的响应/结果类似于:

现在在“index.js”文件中,我试图解构 oAuth 函数响应对象以访问属性access_token并将其放入 URL 中以发出发布请求,但我没有成功。我究竟做错了什么?

0 投票
2 回答
47 浏览

javascript - JavaScript,解构与赋值

我有这个代码:

我有一个改变的建议:

它们都是一行代码,但我想知道是否有解释为什么解构比第一个更好的编码方式。

如果代码是:

我知道这样会是最短的(不知道是否更好):

但我的问题涉及性能、安全性、可读性等原因。