【问题标题】:typescript , spread and object.assigntypescript , spread 和 object.assign
【发布时间】:2026-01-12 09:00:01
【问题描述】:

我只是浏览了一些打字稿生成的代码,对传播的代码有些惊讶

test.ts

let task = { ...data };

test.js

let task = Object.assign({}, data);

我仔细检查了tsconfig.json 文件并在compilerOptions 下拥有

"target": "es2017",

我认为扩展运算符是有效的 es6 代码

所以,将目标改为读取

"target": "ESNext",

我的 test.js 现在有了

let task = { ...data };

我正在使用打字稿 2.7.2

所以,基本上问题归结为为什么我需要 EsNext 而不是 es2017 / es6 ?

【问题讨论】:

    标签: typescript ecmascript-6 ecmascript-next


    【解决方案1】:

    Object rest/spread 属性与 Array rest/spread 属性不同,不包含在 ES2017 规范中。但是它们包含在 ES2018 规范中。

    【讨论】:

    • 哦,好吧,我以为它们被包含在 es6 中。这确实回答了这个问题,所以谢谢!
    • 如果它回答了问题,你能把它标记为答案吗? ;)