数组中的展开操作出错。 TS1005:“,”预期。打字稿
Posted
技术标签:
【中文标题】数组中的展开操作出错。 TS1005:“,”预期。打字稿【英文标题】:Error with spread operation in array. TS1005: ',' expected. TypeScript 【发布时间】:2019-05-09 11:38:25 【问题描述】:我无法弄清楚我在row.sections[SECTION_ID
线上错过了什么。它总是向我显示一个拼写错误','......
常见问题解答:
sections
- 是一个包含objects
的数组。在这种情况下,我 尝试修改自定义创建的部分的特定对象 标记 SECTION_ID。
附言
我还尝试将row.sections[SECTION_ID]
放在一个额外的括号[]
内,但不幸的是它没有帮助......有什么解决方案吗?
rows: state.rows.map(
row =>
row.ID === action.rowID
?
...row,
sections: [
...row.sections,
row.sections[SECTION_ID]: // error is here
...row.sections[SECTION_ID],
data:
...// some data
]
: row
)
【问题讨论】:
section 是数组还是对象?它是用方括号编写的,使其成为一个数组,但随后您尝试将键/值对像对象一样放入其中。 @NicholasTower 嗨!sections
是一个包含对象的数组,是的。在这种情况下,我尝试通过自定义标志 SECTION_ID
修改 sections
的特定对象以在数组中找到它
好的,那么您是想将一个对象推到数组的末尾,还是替换某个索引处的对象?
很难说你想在这里得到什么输出。 sections
数组中的第二个元素应该是一个对象吗?
@KirkLarkin 嗨! sections
的所有元素都是objects
。
【参考方案1】:
您不能以这种方式通过spread
操作在array
中改变一些element
。使用这种方法,您只需将一个新的、变异的element
每次都添加到相同的array
中。所以,如果你想让它正确,你需要使用 map
迭代器来代替:
rows: state.mymaps.rows.map(
row =>
row.ID === action.rowID
?
...row,
sections: row.sections.map(
(section, index) =>
index === JOIN_SECTION_ID
?
...section,
data:
...section.data
: section
)
: row
)
【讨论】:
【参考方案2】:如果您尝试在不改变数组的情况下替换数组某个索引处的元素,您可以制作数组的浅表副本,然后在该索引处设置值。例如:
state.rows.map((row) =>
if (rowID !== action.rowID)
return row;
const sectionCopy = [...row.sections];
sectionCopy[SECTION_ID] =
...row.sections[SECTION_ID],
data:
// some data
,
;
return
...row,
sections: sectionCopy,
;
);
【讨论】:
谢谢,我在我的问题帖子中也做了同样的技巧,但它不能通过三元运算符工作,这就是为什么......以上是关于数组中的展开操作出错。 TS1005:“,”预期。打字稿的主要内容,如果未能解决你的问题,请参考以下文章
Angular4 - npm jQuery 错误 TS1005: ',' 预期
Angular 8应用程序编译显示:“错误TS1005:':'预期” [重复]
node_modules/firebase-functions/lib/function-configuration.d.ts:4:64 - 错误 TS1005: ']' 预期
错误 TS1005:';'预期的。 TypeScript Angular 6 For First Build error rxjs inside node_modules
错误:node_modules/@angular/material/core/common-behaviors/constructor.d.ts:14:64 - 错误 TS1005:';'预期的