ECMAScript 6 对象解构中的扩展语法。TypeScript 和 Babel 支持。

13

以下的 ECMAScript 6 代码是否有效? 最新版本的 Babel 支持它,但 TypeScript 不支持。 我找不到任何涉及此情况的 ES6 参考资料。


这是有效的ECMAScript 6吗? 最新版本的Babel似乎支持,但TypeScript却不支持。 我找不到任何ES6参考文献来处理这种情况。
var a = { foo : 'foo' };
var b = { ...a };

4
对象中一些使用 ... 的方式是 ES7 提案,而不是 ES6。 - Pointy
@Pointy 是正确的。关闭实验模式,你会得到一个错误 Unexpected token - CodingIntrigue
你也可以在 http://kangax.github.io/compat-table/es6/ 上检查兼容性表。 - Sebastian Nette
显然,...不是一个操作符。 - hippietrail
3个回答

16

不是有效的ECMAScript 6语法。在函数参数和数组解构中,ES6仅支持rest语法,在函数调用和数组构造中支持spread语法。

最新版本的Babel好像支持这个功能

Babel实现了objectRestSpread ES7提案作为实验性插件。但是你不应该使用这个功能,它可能随时会出问题。


第二个链接已经失效。 - Dmitri Zaitsev

0

TypeScript 2.1支持此功能。

这里


0

我犯了以下错误

const o = { p : { q:1, r:2 } };
const {{q,r}} = o;

后来我意识到,对于我来说,从p中引导qr是很重要的,所以在我的情况下基本上是语法错误,因此使用以下语法更正了代码。
const {p:{q,r,s=9}} = o;
console.log(q,r,s); // 1,2,9

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接