我注意到ES6解构导入可以像这样实现:
foo.js
export default () => {
return {
a: 'b'
}
}
index.js
import foo from './foo';
export default foo;
export const bar = foo();
然后我可以使用模块:
import foo, { bar } from 'my-module';
但是当我使用my-module
的“深度解构”导入时,它失败了:
import foo, { bar: { a } } from 'my-module';
似乎ES6已经实现了上述语法,但我该如何使用它呢?
答案 0 :(得分:4)
import
的 ImportClause 与解构不同。它们确实有一些语法相似性,但是如果你通读the spec on import
,你会发现它从未引用通常的解构结构,例如 DestructuringAssignmentTarget 或 BindingPattern 。
请记住,导入会在模块之间创建绑定,但是解构分配会将值从源复制到目标。使用想象的解构导入,如果源模块中bar
的值发生更改,是否会更改导入的a
? (毕竟,对于import { bar } from 'my-module';
,如果bar
中的my-module
发生了更改,则导入的bar
会反映出此更改。)或者,解构导入会复制{{1}的值从某个时间点开始到bar.a
?如果是的话,到了什么时候?
你明白了。他们只是不同的野兽。
您当然可以导入然后 destructure:
a
......但我相信你知道的。 : - )