数组中的展开操作出错。 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:“,”预期。打字稿的主要内容,如果未能解决你的问题,请参考以下文章

打字稿错误 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:';'预期的