打字稿,传播和 object.assign

typescript , spread and object.assign

我刚刚浏览了一些 typescript 生成的代码,对 spread 的代码感到有些惊讶

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?

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