ESLint规范TypeScript代码使用方法

目录
  • 前导
    • 安装依赖
    • Rules
    • fix
  • 聊一聊原理
    • parser
    • plugins
    • extends
  • 总结

前导

ESLint 是一种 JavaScript linter,可以用来规范 JavaScript 或 TypeScript 代码,本文教你怎么在项目中快速把 ESLint 安排上。

怎么写出优雅的代码是一个老生常谈的话题,这其中包含了太多内容可聊,但搞一套标准规范绝对是万里长征第一步。ESLint 致力于如何把规范落地到你的项目中,让你的代码清清爽爽。

ESLint 作为一种 JavaScript linter,它能强制帮你遵循一套特定的代码书写风格和标准,并且会在不符合标准的地方贴心地给出提示。

你可能也听说过 TSLint,很可(不)惜(错),已经挂了。原因是考虑到 ESLint 的存在,并且两个项目之间存在大量的重复工作,TSLint 团队在 2019 年宣布不再维护该项目。

也就是说,你可能会搜到很多已存的 TSLint 周边生态包,但在使用之前,你得掂量一下,它们可是没有人在维护了哦。

所以,ESLint 就成为了事实上的标准,帮你规范 JavaScript 和 TypeScript 代码。

安装依赖

在你的工程下运行下面的代码,安装 ESLint 及其它依赖包

npm install --save-dev eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin

.eslintrc.js

创建 .eslintrc.js 文件

{
  "root": true,
  "parser": "@typescript-eslint/parser",
  "plugins": [
    "@typescript-eslint"
  ],
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/eslint-recommended",
    "plugin:@typescript-eslint/recommended"
  ]
}

.eslintignore

再建一个忽略文件 .eslintignore,忽略不想加入限制的文件,比如 node_modules,打包产物文件等

node_modules
dist

package.json scripts

在 package.json 文件中新建一条 lint 命令

{
  "scripts": {
    ...
    "lint": "eslint . --ext .ts",
  }
}

执行 npm run lint 试试看

假如我们的工程下只有 index.ts 文件,内容如下

console.log('Hello world!')

因为我们目前还没有创建任何规则,所以看不出什么变化。

Rules

eslint 的 rules 有三种模式,off,on 和 warn

"off" means 0 (turns the rule off completely)

"warn" means 1 (turns the rule on but won't make the linter fail)

"error" means 2 (turns the rule on and will make the linter fail)

如果想禁用 console,可以这样设置

{
  "root": true,
  "parser": "@typescript-eslint/parser",
  "plugins": [
    "@typescript-eslint"
  ],
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/eslint-recommended",
    "plugin:@typescript-eslint/recommended"
  ],
  "rules": {
    "no-console": 2 // Remember, this means error!  }
}

再运行 npm run lint

2:1  error  Unexpected console statement  no-console
     1 problem (1 error, 0 warnings)

lint 报错了...

关掉 no-console

{
  "root": true,
  "parser": "@typescript-eslint/parser",
  "plugins": [
    "@typescript-eslint"
  ],
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/eslint-recommended",
    "plugin:@typescript-eslint/recommended"
  ],
  "rules": {     "no-console": 0
  }
}
npm run lint

世界安静了...

fix

我们可以利用 ESLint 的 fix 功能,自动修复报 warn 或 error 的代码

改造一下 package.json

{
  "scripts": {
    ...
    "lint": "eslint . --ext .ts",
    "lint-and-fix": "eslint . --ext .ts --fix"  },
}

运行 npm run lint-and-fix  可以检查和自动修复有问题代码

聊一聊原理

parser

ESLint 原理需要结合 parser 配置项来讲。

首先,ESLint 为什么需要一个 解析器? 简单来讲,ESLint 做规则校验的前提是将语言转变为抽象语法树(AST),它的校验规则是用于适配 AST 的,在遍历 AST 节点的过程中,找到该节点适配的规则,并判断是否满足规则。

plugins

ESLint 能火起来的很大原因,在于它的插件式设计,这种设计使得他能快速的响应变化。插件是什么?插件就是规则,任何插件想要在 ESLint 中生效,需要规定两点内容。

  • 该规则针对的是 AST 的那些节点。
  • 该节点需要满足怎样的条件。

有了这两点,ESLint 就会在遍历 AST 的过程中,找出不符合规则的节点,将其报告出来。

默认情况下,ESLint 中的规则会对 JS 进行校验,如果我们想对 React 进行校验的话,就需要增加 eslint-plugin-react 插件,如下所示,在 plugins 中增加这个插件,eslint-plugin 的前缀是可以省略的。

"plugins": [
    "react"
]

有了规则是不够的,我们还需要开启这些规则,可以在 rules 中配置,更好的方法就是在 extends 中加入以下代码。

"extends": [
    "plugin:react/recommended"
]

extends

ESLint 中的规则很多,但是默认都不会开启的,我们需要在 rules 中设定这些规则开关,这个环节非常繁琐。因此 ESLint 设计了 extends 这个字段,用于继承别的文件中已经配置好的的规则。在不加入任何插件的情况下,extends 可以配置为 eslint:recommended 或 eslint:all。recommended 是 ESLint 官方推荐的配置,校验的规则比较少,eslint:all 则会开启全部的规则校验。

如果你想了解这两者的区别,你可以去 官方规则文档 查看。更快的方法是将 "eslint:recommended" 变成 "eslint:all"。修改后的结果非常夸张,我总共 3 行代码 ESLint 检测出 10 个错误。

extends 是一个数组,可以配置多组规则,每个配置继承它前面的配置。实际开发中,我们会继承一些优秀的 ESLint 方案,比如 airbnb,然后结合自己的实际情况,在 rules 中进一步配置。

总结

使用 @typescript-eslint/parser 作为解析器,该解析器能够识别 TS 语法,结合特定的 plugin 就能实现 TS 规范化。

ESLint 的核心在于 parser 和 plugin,一个负责将当前代码解析为 AST,一个负责在 AST 的基础上生成规则。

不同的 parser 代表的不同的解析方式,各式各样的 plugin 也代表不同的规则,ESLint 的生态能越来越好,一部分要归功于这种可插拔式的设计。

目前社区有很多优秀的 ESLint 规范,我们可以参考这些规范做一份适用于自己团队的规范。

以上就是ESLint规范TypeScript代码使用方法的详细内容,更多关于ESLint规范TypeScript的资料请关注我们其它相关文章!

(0)

相关推荐

  • Nuxt项目支持eslint+pritter+typescript的实现

    脚手架安装好nuxt的基本项目 npx create-nuxt-app <项目名>,如:npx create-nuxt-app nuxt-ts,按照提示安装你想要的东西,本次项目预装: Universal模式下koa+PWA+linter+prettier+axios ,默认的项目目录如下: eslint + prettier + vscode 保存自动格式化&修复 本人习惯缩进为4个空格,但是eslint&nuxt生成的项目默认为2个,因此需要更改配置 .editorconf

  • vue2项目增加eslint配置代码规范示例

    目录 正文 1.安装以下eslint插件 1.1 .eslintrc.js文件配置 1.2 .eslintignore文件的配置 2. 安装prettier 3. package.json相关代码 4. vscode的配置 5. 启动项目 正文 eslint用于代码检查,prettier用于代码格式化,具体操作如下 1.安装以下eslint插件 安装以下eslint插件,并增加.eslintrc.js配置文件,.eslintignore配置忽略检查的文件 (1)eslint 用于检查和标示出EC

  • koa TS ESLint搭建服务器重构版过程详解

    目录 初始化项目目录 安装项目运行所需要的软件包 修改package.json 从.env中加载环境变量 配置路径别名 用法 目录规范 编码风格规范 Eslint 初始化项目目录 yarn init -y 安装项目运行所需要的软件包 生产依赖 yarn add koa koa-router cross-env module-alias dotenv koa:搭建 Koa 服务的核心软件包. koa-router:Koa 路由软件包. koa-bodyparser:解析 POST 请求参数的软件包

  • vue项目配置eslint保存自动格式化问题

    目录 vue配置eslint保存自动格式化 插件实现按照 ESLint 规则自动格式化 1. 需求插件 2. 修改默认格式化插件 3. 「Ctrl + S」保存时按照 ESLint 规则自动格式化 vue配置eslint保存自动格式化 vue项目中有保存自动格式化,还是很舒服的,满足了大多数强迫症 1,用户设置和工作区设置 2,如何找到配置文件 3,setting.json 4,需要安装的插件 5,设置默认格式化程序 在VSCode中,两个层级的设置分别为: 用户设置:应用于所有工作区的全局设置

  • vue基础ESLint Prettier配置教程详解

    目录 引言 前言 安装 VsCode 插件 配置 VsCode "Workspace.json" 配置 vue 的 "package.json" 配置 vue 的 ".eslintrc.js" 配置 vue 的 ".prettierrc" 配置 "eslint --fix" 一键修复 配置 ESlint 提交时检测 测试配置效果 问题排查 尾声 引言 VsCode + Vue + ESLint + Pret

  • vite项目添加eslint prettier及husky方法实例

    目录 1. 初始化vite项目 2. 添加eslint 3. 添加 prettier 4. 添加 husky和lint-staged 5. 配置commitlint 1. 初始化vite项目 npm init vite Project name: - vite-project // 项目名称,默认 vite-project Select a framework: › react // 选择框架 Select a variant: › react-ts // 选择组合 2. 添加eslint 安装

  • Vue项目中引入ESLint校验代码避免代码错误

    目录 1 ESLint 是什么 2 在 Vue 项目中引入 ESLint 2.1 引入 ESLint 2.2 ESLint 配置 2.3 执行 ESLint 代码检查 2.4 自动修复 ESLint 问题 3 配置 husky 和 PR 门禁 3.1 配置 husky 门禁 3.2 配置 PR 门禁 4 常见的 ESLint 问题及修复案例 4.1 案例1: 4.2 案例2: 4.3 案例3: 4.4 案例4: 5 感谢 1 ESLint 是什么 ESLint 是一个插件式的 JavaScrip

  • ESLint规范TypeScript代码使用方法

    目录 前导 安装依赖 Rules fix 聊一聊原理 parser plugins extends 总结 前导 ESLint 是一种 JavaScript linter,可以用来规范 JavaScript 或 TypeScript 代码,本文教你怎么在项目中快速把 ESLint 安排上. 怎么写出优雅的代码是一个老生常谈的话题,这其中包含了太多内容可聊,但搞一套标准规范绝对是万里长征第一步.ESLint 致力于如何把规范落地到你的项目中,让你的代码清清爽爽. ESLint 作为一种 JavaSc

  • Vue项目中ESlint规范示例代码

    前言 eslint是一种代码风格管理的工具,可以制定一些代码编写规范,在vue项目中经常用到,本文就给大家分享了开发项目中使用的eslint校验规范,供参考: 示例代码 module.exports = { root: true, parserOptions: { parser: 'babel-eslint', sourceType: 'module' }, env: { browser: true, node: true, es6: true, }, extends: ['plugin:vue

  • vue3+ts+EsLint+Prettier规范代码的方法实现

    目录 使用 EsLint的使用 添加配置文件 Prettier的使用 使用husky和lint-staged构建代码 增加setting.json配置 参考资料 本文主要介绍在Vue3中使用TypeScript做开发时,如何安装与配置EsLint和Prettier,以提高编码规范. (1)EsLint 提供编码规范: (2)Prettier 是一个 Opinionated 的代码格式化工具. 使用 EsLint的使用 安装依赖 npm i -D eslint eslint-plugin-vue

  • 去掉vue 中的代码规范检测两种方法(Eslint验证)

    我们在使用vue 脚手架时,为了规范团队的代码格式,会有一个代码规范检测,如果不符合规范就会报错,有时候我们不想按照他的规范去写.这时我们需要关闭.这里有两种方法. 1.在搭建vue脚手架时提示是否启用eslint检测的. Use ESLint to lint your code? 写 no; 2.如果项目已经生成,我们可以这样. 在项目中代开 bulid 文件夹下的 webpack.base.config.js 文件.将以下代码删掉或注销: { test: /\.(js|vue)$/, loa

  • eslint+prettier统一代码风格的实现方法

    1.实现效果 Eslint校验代码语法,prettier统一格式化代码,按下保存自动修复eslint错误,自动格式化代码. 2.安装vscode插件 Vetur ESLint Prettier - Code formatter 3.配置vscode设置 文件–首选项–设置,打开json模式,添加以下配置: { // 控制工作台中活动栏的可见性. "workbench.activityBar.visible": true, //主题设置 "workbench.colorThem

  • vscode配置setting.json文件实现eslint自动格式代码

    一.ESlint+Vetur 实现ESlint代码规范 二.重点----旧版本(旧版本配置在setting.json 会出现警告) { "eslint.autoFixOnSave": true, "eslint.validate": [ "javascript", { "language": "vue", "autoFix": true }, { "language"

  • Java获取代码中方法参数名信息的方法

    前言 大家都知道随着java8的使用,在相应的方法签名中增加了新的对象Parameter,用于表示特定的参数信息,通过它的getName可以获取相应的参数名.即像在代码中编写的,如命名为username,那么在前台进行传参时,即不需要再编写如@Parameter("username")类的注解,而直接就能进行按名映射. 如下的代码参考所示: public class T { private interface T2 { void method(String username, Stri

  • 详解如何在vue项目中使用eslint+prettier格式化代码

    对于前端代码风格这个问题一直是经久不衰,每个人都有自己的代码风格,每次看到别人代码一团糟时候我们都会吐槽下.今天给大家介绍如何使用eslint+prettier统一代码风格. 对于eslint大家应该比较了解了,是用来校验代码规范的.给大家介绍下prettier,prettier是用来统一代码风格,格式化代码的,支持js.ts.css.less.scss.json.jsx.并且集成了vscode.vim.webstorm.sublime text插件. 如果你的项目中采用的是ellint默认规则

  • 用VsCode编辑TypeScript的实现方法

    TypeScript是Javascript的超集,它提供了类.模块.接口来帮助你构建强大的组件. VS Code下TypeScript支持在两种不同的模式下运行: 文件范围:在这个模式下,VsCode打开的TypeScript文件被视为独立单元.只要A.ts没有明确引用b.ts(使用///引用目录或额外模块),那么两个文件就没有通用项目上下文. 显式项目:一个typescript项目通过一个tsconfig.json被定义.该文件指定ts项目根目录,列出了属于项目的文件还有编译选项.更多有关ts

  • Java使用lombok消除冗余代码的方法步骤

    一.项目背景 在写Java程序的时候经常会遇到如下情形: 新建了一个Class类,然后在其中设置了几个字段,最后还需要花费很多时间来建立getter和setter方法. lombok项目的产生就是为了省去我们手动创建getter和setter方法的麻烦,它能够在我们编译源码的时候自动帮我们生成getter和setter方法.即它最终能够达到的效果是:在源码中没有getter和setter方法,但是在编译生成的字节码文件中有getter和setter方法. 比如源码文件: import java.

随机推荐