本文档详细介绍了 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: true)ecmaVersion: 6)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 的 const 和 let 声明。
| 规则 | 设置 | 描述 |
|---|---|---|
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
这些规则规范了生成器函数的语法。
| 规则 | 设置 | 描述 |
|---|---|---|
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
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 特性
| 规则 | 设置 | 描述 |
|---|---|---|
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 特性。这些规则旨在促进:
const 和 let 而非 var这些规则通过利用 ES6 的优势,有助于维护现代、一致且可读的代码库。