2

根据这个来源在某个项目中看到这种用法的模糊记忆,我很好奇是否有人能够做到以下几点:

import {map: { series }} from 'contra'

如本解构分配概述所述:

ES6 中的 import 语句的行为类似于解构,但重要的是要注意它实际上并不是解构。

看起来导入的工作方式有点不同,也许人们不能指望同样的行为,但我无法验证它的状态。我想要做的是官方 ECMAScript 6/7 规范的一部分吗?

在尝试回答这个问题时,请包括(或链接)规范中澄清此问题的部分。

4

2 回答 2

4

规范的相关部分在这里

ImportDeclaration是_

import ImportClause FromClause ;

如果您检查ImportClause,您会发现它只是熟悉的* as Foo、 or DefaultImport、 or{ImportSpecifier, ...}等​​,其中ImportSpecifier是一个ImportBinding,而后者又是一个BindingIdentifer,它只是一个普通的旧Identifier

MDN 条目介于误导和完全错误之间。它应该说(现在确实说):

ES6 中的 import 语句表面上与解构相似,但实际上完全不相关。

这些天,我在 MDN 中发现越来越多的不正确和误导性信息。它应该与一粒盐一起服用。权威参考是规范。

于 2016-09-07T17:57:36.963 回答
0

只有在分配变量时才能使用解构分配。导入是完全不同的事情,你不能对它们使用解构赋值。

您可以改为通过直接require()调用使用解构赋值(假设您使用的是 Node.js 或 RequireJS):

const {map: { series }} = require('contra')
于 2016-09-07T17:41:50.377 回答