javascript - Typescript 错误 TS1005 : ':' expected. 与 Object.assign()

标签 javascript typescript

我在 typescript 中嵌套了 Object.assign():

(<any>Object).assign({}, state, {
    action.item_id: (<any>Object).assign({}, state[action.item_id], {
        label_value: action.value
    })
})

这会产生这些错误:

ERROR in ./src/reducers/ItemsReducer.ts
(2,19): error TS1005: ':' expected.

ERROR in ./src/reducers/ItemsReducer.ts
(2,26): error TS1005: ',' expected.

ERROR in ./src/reducers/ItemsReducer.ts
(2,28): error TS1136: Property assignment expected.

奇怪的是,如果我修复了 key ,错误就会消失,例如:

(<any>Object).assign({}, state, {
    "fixed_key": (<any>Object).assign({}, state[action.item_id], {
        label_value: action.value
    })
})

这让我一头雾水,为什么在那个地方调用 action.item_id 之后他没有提示几个字符就不行了?

最佳答案

在对象声明中使用变量作为属性名时,需要使用computed property将其放在括号中表示:

(<any>Object).assign({}, state, {
    [action.item_id]: (<any>Object).assign({}, state[action.item_id], {
        label_value: action.value
    })
})

关于javascript - Typescript 错误 TS1005 : ':' expected. 与 Object.assign(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38720664/

相关文章:

javascript - 为什么我不能左键单击我的博客文章?

javascript - 如何给计算器添加按钮

reactjs - 在标签内编写逻辑代码

javascript - 在 React/TypeScript 应用程序中初始化可为空状态的正确方法是什么?

typescript - 使用 VS Code 和 webpack-dev-server 进行调试时断点不起作用

node.js - 包含 node.d.ts 时出现 Typescript 编译器错误

javascript - 合并/交织 2 个不同长度的字符串

javascript - 是否可以拦截/覆盖页面中的所有点击事件?

javascript - 仅当客户端浏览器开始卡顿时,是否可以在 highcharts 中打开升压模式?

typescript - Cypress 10 : Custom command is not a function