根据这个来源和在某个项目中看到过这种用法的模糊记忆,我很好奇是否有人能够做到以下:
import {map: { series }} from 'contra'
如本解构赋值概述所述:
ES6中的import语句的行为类似于析构,但是它没有重要的是要注意,它实际上并不是解构。
似乎导入的工作方式有点不同,也许人们不能期望完全相同的行为,但我还无法验证这一状态。我想做的是官方ECMAScript 6/7规范的一部分吗?
在试图回答这个问题时,请包括(或链接)规范中澄清这个问题的部分
规范的相关部分在这里。
一个ImportDeclaration是
import
ImportClause FromClause ;
如果你检查ImportClause,你会看到它只是熟悉的* as Foo
,或DefaultImport
,或{ImportSpecifier, ...}
等,其中ImportSpecifier是一个ImportBinding,这反过来又是一个 bindingidentifier ,这只是一个普通的旧的标识符。
MDN条目介于误导和完全错误之间。它应该说(现在确实说了):
ES6中的import语句表面上类似于解构,但实际上是完全不相关的。
这些天我发现越来越多的不正确和误导的信息在MDN。对此应该持保留态度。权威参考为规范。
只能在分配变量时使用解构赋值。导入是完全不同的东西,你不能对它们使用解构赋值。
你可以用直接调用require()
来代替解构赋值(假设你正在使用Node.js或RequireJS):
const {map: { series }} = require('contra')