【问题标题】:Destructure Spread off Import ES6解构扩展导入 ES6
【发布时间】:2016-06-22 02:24:25
【问题描述】:
import {Component, ...actions} from '../MyModule';

似乎抛出了一个 linting 错误。为什么不能在 ES6 导入语句上“传播”?

【问题讨论】:

  • 你期望解构做什么?给你所有其他导出减去Component
  • 查看规范:ecma-international.org/ecma-262/6.0/#sec-imports NamedImports 的表示法可能看起来像对象表示法,但它有些不同(这就是为什么没有解构的原因)。如果 MyModule 导出一个对象,您可以在赋值中进行解构。
  • 主要是因为扩展运算符不是 ES6 的一部分,而是对某些未来版本的提议。

标签: javascript module ecmascript-6 ecmascript-next


【解决方案1】:

ES6 的导入语法不是解构的,就这么简单。语法以{开头,但其格式完全不同,在实现中的处理方式也大相径庭。例如,您可以使用

重命名导入
 import {Component as MyComponent} from './MyModule';

这显然不是对象字面量。

如果您需要一个可用于将导入作为属性引用的对象,您可以这样做

 import * as MyModule from '../MyModule';

然后使用MyModule.<exportName>。如果您的目标是专门获取一个包含所有导出值的对象,不包括Component,那么您总是可以在之后进行解构,例如

 const {Component, ...actions} = MyModule;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    • 2016-02-05
    • 2018-03-08
    • 1970-01-01
    相关资源
    最近更新 更多