ES2015 中 `export { foo as default }` 有效吗?

2024-05-16

我收到了GitHub 上的问题 https://github.com/benmosher/eslint-plugin-import/issues/54关于我的 ES2015 模块导入/导出验证插件 ESLint 无法识别default使用以下语法导出:

export { 
    foo as default,
    bar
}

我的插件将检查以下(等效?)语法没问题:

export default foo;
export const bar = ..;

Both and Esprima http://esprima.org/demo/parse.html?code=%2F%2F%20Life%2C%20Universe%2C%20and%20Everything%0Avar%20answer%20%3D%206%20*%207%3B%0A%0Aexport%20%7B%20answer%20as%20default%20%7D%3B%0A解析类似的语法不会出现错误,这适用于两端使用 Babel 的代码(导入和导出)。

然而,我不相信spec http://www.ecma-international.org/ecma-262/6.0/#sec-exports-static-semantics-early-errors允许前者export { x as default } form:

对于每个IdentifierName n in ReferencedBindings of ExportClause:如果 n 的 StringValue 是预留字,或者 n 的 StringValue 是以下之一,则这是语法错误:“implements”、“interface”、“let”、“package”、“private”、“protected”、“public” 、“静态”或“产量”。

ReservedWord 确实包括default http://www.ecma-international.org/ecma-262/6.0/#sec-reserved-words,尽管我认为有人可能会争辩说ReferencedBindings正在指的是特别针对模块本地标识符名称 http://www.ecma-international.org/ecma-262/6.0/#sec-exports-static-semantics-exportedbindings那些正在exported (i.e. foo) 而不是导出的名称本身。

能够导出保留字通常看起来也很奇怪; Babel 也会很高兴地允许类似的事情

// ./foo.js
export { foo as yield }
// ./mod.js
import { yield as nonReservedIdentifier } from './foo'

所以,总而言之:就是export { foo as default }ES2015 中导出默认值的有效方法?


Yes, 参考绑定 http://www.ecma-international.org/ecma-262/6.0/#sec-static-semantics-referencedbindings仅指第一个 IdentifierName。所以

export { default as something } // or
export { default }

是无效的,但是

export { something as default }

不是。 ESLint 需要修复这里。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ES2015 中 `export { foo as default }` 有效吗? 的相关文章

随机推荐

  • DateTime.Parse("2012-09-30T23:00:00.0000000Z") 始终转换为 DateTimeKind.Local

    我想解析一个表示 UTC 格式的日期时间的字符串 我的字符串表示形式包括 Zulu 时间规范 该规范应指示该字符串表示 UTC 时间 var myDate DateTime Parse 2012 09 30T23 00 00 0000000
  • 在 MySQL 中执行触发器需要什么权限?

    我发现 MySQL 手册中对 DEFINER 的解释令人困惑 因此我不确定运行应用程序的 执行用户 需要什么权限 为了安全起见 我喜欢将 执行用户 限制为所需的最少权限 我知道触发器 存储过程的创建者需要超级权限 但是 执行用户 是否也需要
  • 您可以在 Cucumber 的 Give、When 和 Then 步骤定义期间定义实例变量吗

    我知道使用 Cucumber 您可以在给定步骤定义期间定义实例变量 该实例变量成为World范围 然后 您可以在 When 和 Then 的步骤定义期间访问此实例变量 您是否也可以在 When 和 Then 步骤定义期间定义实例变量 并在后
  • 如何在 iOS 中将 Firebase 对象持久保存到磁盘?

    看起来Firebase http www firebase comiOS 实现不支持客户端模型的离线缓存 这在实践中意味着 对于需要身份验证的 Firebase 应用程序 您需要首先进行身份验证并等待 Firebase 完成登录 检查用户身
  • 如何使QTableView类的restoreState()和saveState()正常工作?

    首先 我想说 我的问题已经在这里讨论过 并且这里是 https stackoverflow com questions 1163030 qt qtableview and horizontalheader restorestate 但答案并
  • 使用 BitBlt 捕获程序窗口始终返回相同的图像

    我编写了以下代码 C Win32 来捕获游戏窗口屏幕并从图像中获取像素颜色数组 函数 autoB 完成这项工作 然后我将结果数组绘制到窗口中以直观地检查我得到的结果 问题是 这个程序在我启动计算机后只工作一次 在第一次 缓存 从游戏中获取的
  • 控制缓存过期

    通过 Google 网站管理员工具的 PageSpeed 分析器运行我的网页后 它向我报告我的资源没有被缓存 下面是我的 htaccess 文件中直接取自 H5BP 的代码 我是否正确地假设以下过期时间设置正确 但我的实现中出现了问题 或者
  • axios post请求react-native中出现网络错误

    这是我通过 axios post 请求检查身份验证的方法 CheckAuth let obj username email protected cdn cgi l email protection password zzxxz oauth
  • 我的 Powershell GUI 界面在打开网格视图时不断调整大小

    我目前正在构建一个复制到剪贴板工具 其中显示存储在文件夹中的 txt 文件列表 并且我使用 out gridview 来允许用户更好地选择和过滤列表 我已附上图片以供参考 单击加载 out gridview 的按钮后如何停止调整大小 Too
  • Spring Thymeleaf - 调用服务方法布尔值来显示 HTML 项目

    在我的标题 HTML 中 我显示一个 UL LI 菜单 其中 LI 项目之一的可见性取决于服务方法调用 我试过这个 家庭控制器 Controller public class HomeController private static fi
  • (Tcl/Expect) 退出后清屏

    我想在退出我的 半 交互式期望脚本后清除屏幕 在本地计算机上 我可以在脚本中做到这一点吗 这是我尝试过的 但失败了 usr bin expect f set env TERM vt100 spawn ssh Y username domai
  • Jquery $(window).width() 不包括滚动条宽度?

    我有一个页面使用 javascript 设置了很多 css 属性 并使用 window width 来确定页面宽度 除此之外 它还使用该方法将一些 div 宽度设置为页面的完整宽度 A 这样做是因为很多其他计算都是在 javascript
  • 如何检查带有通配符的模拟调用?

    我正在编写单元测试 并且想要检查具有函数对象的调用 如下所示 call u mock u foobar
  • 如何在 Rails 4 中使用 params.require

    我有一个像这样的私有方法 用于有四个字段的注册表单 firstname email password and confirm password 我不知道如何检查password confirmation def user params pa
  • Godaddy 托管上的 CakePHP 控制台

    我一直在努力让我的 CakePHP 网站在 Godaddy 网格托管 帐户上运行 我的蛋糕应用程序设置是从帐户的子目录托管的 并且可以通过子域访问 我必须调整我的 htaccess 文件才能使其正常工作 现在我需要让 CakePHP 控制台
  • 如何从连接矩阵绘制图像?

    我想编写一个脚本来从连接矩阵创建图像 基本上 只要矩阵中有 1 我就希望该区域在图像中被着色 对于例如 我使用 Photoshop 创建了这张图像 但我有一个很大的数据集 所以我必须自动化这个过程 如果有人能指出我正确的方向 那将非常有帮助
  • 解析日期不正确

    My code DateFormat format new SimpleDateFormat dd MM YYYY Date Today format parse today Date Date format parse date diff
  • 创建 AoT 兼容的服务工厂

    我正在尝试为缓存服务创建一个服务工厂 主要要求是每次可以使用不同的字符串实例化单个服务 最终的结果会有多个cache每个服务都由唯一定义databaseName 每个缓存可以有一个或多个stores也由唯一定义storeName 其他服务将
  • caffe reshape / 上采样全连接层

    假设我们有一个像这样的层 layer name fully connected type InnerProduct bottom bottom top top inner product param num output 1 输出是batc
  • ES2015 中 `export { foo as default }` 有效吗?

    我收到了GitHub 上的问题 https github com benmosher eslint plugin import issues 54关于我的 ES2015 模块导入 导出验证插件 ESLint 无法识别default使用以下语