导入语句中的解构分配

时间:2016-09-07 17:33:00

标签: javascript ecmascript-6 destructuring es6-modules javascript-import

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

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

正如destructuring assignment概述所述:

  

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

看来导入工作有点不同,也许人们不能指望相同的行为,但我还没有能够验证其状态。我正在尝试做官方ECMAScript 6/7规范的一部分吗?

在尝试回答此问题时,请包含(或链接)说明此问题的规范部分。

2 个答案:

答案 0 :(得分:4)

规范的相关部分是here

ImportDeclaration

  

import ImportClause FromClause ;

如果您检查 ImportClause ,您会看到它只是熟悉的* as FooDefaultImport{ImportSpecifier, ...}等,其中 ImportSpecifier 是一个 ImportBinding ,它又是一个 BindingIdentifer ,它只是一个普通的标识符

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

  

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

这些天我在MDN中发现越来越多的错误和误导性信息。应该用一粒盐。权威参考是规范。

答案 1 :(得分:0)

只有在分配变量时,才能使用解构分配。进口是完全不同的东西,你不能使用它们的解构赋值。

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

const {map: { series }} = require('contra')