菜单

ES6 规则

相关源文件

目的与范围

本文档详细介绍了 Airbnb JavaScript 样式指南中针对 ES6(ECMAScript 2015)特性的 ESLint 规则。这些规则强制执行现代 JavaScript 特性(如箭头函数、类、模板字面量、解构和其他 ES6 语法)的最佳实践。有关导入和导出规则的详细信息,请参阅导入规则

来源: packages/eslint-config-airbnb-base/rules/es6.js1-4

概述

ES6 规则配置 ESLint 以识别和强制执行 ECMAScript 2015 特性的最佳实践。这些规则在 eslint-config-airbnb-base 包中定义,适用于所有遵循 Airbnb 样式指南的 JavaScript 代码。

来源: packages/eslint-config-airbnb-base/rules/es6.js1-12

配置

ES6 规则模块配置 ESLint 环境以正确识别 ES6 特性

这些设置确保:

  • ES6 全局变量被识别 (es6: true)
  • 解析器理解 ES6 语法 (ecmaVersion: 6)
  • 文件被视为 ES 模块 (sourceType: 'module')
  • 正确配置了诸如生成器等特定功能

来源: packages/eslint-config-airbnb-base/rules/es6.js1-12

规则类别

ES6 规则可以根据它们涵盖的特性分为几个类别。

来源: packages/eslint-config-airbnb-base/rules/es6.js14-183

箭头函数规则

根据 Airbnb 样式指南,箭头函数有特殊的语法规则,以确保一致性和可读性。

规则设置描述
arrow-body-style['error', 'as-needed']强制在可以省略大括号的地方不使用大括号
arrow-parens['error', 'always']要求箭头函数参数始终使用括号
arrow-spacing['error', { before: true, after: true }]要求箭头函数箭头的两边有空格
prefer-arrow-callback['error', { allowNamedFunctions: false, allowUnboundThis: true }]建议使用箭头函数作为回调

示例

来源: packages/eslint-config-airbnb-base/rules/es6.js15-28 packages/eslint-config-airbnb-base/rules/es6.js109-113

类规则

这些规则强制执行 ES6 类的最佳实践。

规则设置描述
constructor-super'error'验证构造函数中的 super() 调用
no-class-assign'error'禁止修改类声明的变量
no-dupe-class-members'error'禁止重复的类成员
no-this-before-super'error'禁止在构造函数中使用 super() 之前的 this/super
no-useless-constructor'error'禁止不必要的构造函数

示例

来源: packages/eslint-config-airbnb-base/rules/es6.js30-31 packages/eslint-config-airbnb-base/rules/es6.js37-39 packages/eslint-config-airbnb-base/rules/es6.js50-52 packages/eslint-config-airbnb-base/rules/es6.js80-81 packages/eslint-config-airbnb-base/rules/es6.js87-89

变量声明规则

这些规则鼓励适当使用 ES6 的 constlet 声明。

规则设置描述
no-const-assign'error'禁止修改使用 const 声明的变量
no-var'error'要求使用 let 或 const 而不是 var
prefer-const['error', { destructuring: 'any', ignoreReadBeforeAssign: true }]建议对声明后永不修改的变量使用 const 声明

示例

来源: packages/eslint-config-airbnb-base/rules/es6.js47-48 packages/eslint-config-airbnb-base/rules/es6.js99-100 packages/eslint-config-airbnb-base/rules/es6.js115-119

对象和解构规则

这些规则推广使用 ES6 对象简写和解构特性。

规则设置描述
object-shorthand['error', 'always']要求对象字面量使用方法和属性的简写语法
no-useless-computed-key'error'禁止使用无用的计算属性键
no-useless-rename'error'禁止将 import、export 和解构赋值重命名为相同名称
prefer-destructuring'error'倾向于从数组和对象进行解构

示例

来源: packages/eslint-config-airbnb-base/rules/es6.js84-85 packages/eslint-config-airbnb-base/rules/es6.js91-97 packages/eslint-config-airbnb-base/rules/es6.js102-107 packages/eslint-config-airbnb-base/rules/es6.js121-134

模板字面量和字符串规则

这些规则鼓励使用 ES6 模板字面量而不是字符串拼接。

规则设置描述
prefer-template'error'建议使用模板字面量而不是字符串拼接
template-curly-spacing'error'强制模板字符串中的空格

示例

来源: packages/eslint-config-airbnb-base/rules/es6.js152-154 packages/eslint-config-airbnb-base/rules/es6.js177-179

生成器和 yield 规则

这些规则规范了生成器函数的语法。

规则设置描述
generator-star-spacing['error', { before: false, after: true }]强制生成器函数中 * 周围的空格
yield-star-spacing['error', 'after']强制 yield* 表达式中 * 周围的空格
require-yield'error'禁止没有 yield 的生成器函数

示例

来源: packages/eslint-config-airbnb-base/rules/es6.js33-35 packages/eslint-config-airbnb-base/rules/es6.js156-158 packages/eslint-config-airbnb-base/rules/es6.js181-183

剩余参数和展开运算符

这些规则鼓励使用 ES6 剩余参数和展开语法。

规则设置描述
prefer-rest-params'error'鼓励使用剩余参数而不是 arguments
prefer-spread'error'建议使用展开语法而不是 .apply()
rest-spread-spacing['error', 'never']强制剩余/展开运算符及其表达式之间没有空格

示例

来源: packages/eslint-config-airbnb-base/rules/es6.js144-150 packages/eslint-config-airbnb-base/rules/es6.js160-162

Symbol 规则

ES6 引入了 Symbol 作为一种新的原始类型,这些规则规范了其使用。

规则设置描述
no-new-symbol'error'禁止将 Symbol 构造函数与 new 运算符一起使用
symbol-description'error'创建 Symbol 时要求提供描述

示例

来源: packages/eslint-config-airbnb-base/rules/es6.js59-61 packages/eslint-config-airbnb-base/rules/es6.js173-175

导入和导出规则

尽管详细的导入/导出规则在导入规则中有所涵盖,但 ES6 规则模块包含一些基本规则。

规则设置描述
no-duplicate-imports'off'为支持 import/no-duplicates 而关闭
no-restricted-exports'error'禁止导出指定名称
no-restricted-imports'off'可配置为禁止特定导入

no-restricted-exports 规则特别禁止导出:

  • default - 鼓励具名导出
  • then - 避免与 Promise 类似行为的混淆

来源: packages/eslint-config-airbnb-base/rules/es6.js54-57 packages/eslint-config-airbnb-base/rules/es6.js63-70 packages/eslint-config-airbnb-base/rules/es6.js72-77

其他 ES6 规则

一些额外的规则确保正确使用 ES6 特性

规则设置描述
no-confusing-arrow['error', { allowParens: true }]禁止可能与比较混淆的箭头函数
prefer-numeric-literals'error'禁止使用 parseInt(),倾向于使用二进制、八进制和十六进制字面量
prefer-reflect'off'建议使用 Reflect 方法(已关闭)
sort-imports'off'导入排序(已关闭)

示例

来源: packages/eslint-config-airbnb-base/rules/es6.js41-45 packages/eslint-config-airbnb-base/rules/es6.js136-138 packages/eslint-config-airbnb-base/rules/es6.js140-142 packages/eslint-config-airbnb-base/rules/es6.js164-171

总结

Airbnb JavaScript 样式指南中的 ES6 规则强制一致使用现代 JavaScript 特性。这些规则旨在促进:

  1. 使用语法一致的箭头函数
  2. 正确利用 ES6 类
  3. 优先使用 constlet 而非 var
  4. 使用对象简写和解构
  5. 使用模板字面量而非字符串拼接
  6. 遵循生成器和 yield 的正确语法
  7. 正确使用剩余/展开运算符和 Symbol

这些规则通过利用 ES6 的优势,有助于维护现代、一致且可读的代码库。

来源: packages/eslint-config-airbnb-base/rules/es6.js1-185