TypeScript实战-25-ESLint代码检测

一,前言

使用Vue和React开发时,通常使用ESLint做代码检测
TypeScript有自己的检查工具TSLint
但由于ESLint在Vue和React的影响及更好的性能
TypeScript也决定使用ESLint做TS的代码检测工具

二,ESLint

TypeScript + ESLint:

TypeScript编译器主要做两件事,即类型检查和语言转换
	1,类型检查
	2,语言转换
	也会对语法错误做一些检查
而ESLint除了检查语法,还能够保持代码风格统一

问题:ESLint不能直接检查TS语法

ESLint不能直接检查TS语法,因为TypeScript和ESLint两种语法树AST是不兼容的
(之前的TSLint是基于TS抽象语法树工作的,不会有兼容性问题,但不能被重用)

解决:typescript-eslint插件

引入typescript-eslint插件解决兼容性问题
为ESLint提供解析TS代码的编译器
将TS语法树转换为ESLint语法树

三,ESLint配置

package.json:

"scripts": {
	...
    "lint": "eslint src --ext .js,.ts" // 自动检查js,ts
    ...
},
"devDependencies": {
	...
    "@typescript-eslint/eslint-plugin": "^1.10.2",// 识别TS语法
    "@typescript-eslint/parser": "^1.10.2",	// TS解析器
    "eslint": "^5.16.0",	// eslint
    ...
  },

.eslintrc.json:

{
  "parser": "@typescript-eslint/parser",	// 指定解析器
  "plugins": ["@typescript-eslint"],	// 指定插件
  "parserOptions": {
      "project": "./tsconfig.json"	// 类型信息
  },
  "extends": [
    "plugin:@typescript-eslint/recommended"	// 官方推荐规则
  ],
  "rules": {
    "@typescript-eslint/no-inferrable-types": "off" // 关闭类型推断
  }
}

执行:

npm run lint

四,使用ESLint插件

setting.json:

{
    "files.autoSave": "onWindowChange",
    "editor.quickSuggestions": {
        "strings": true
    },
    "window.zoomLevel": 0,
    "typescript.updateImportsOnFileMove.enabled": "never",
    "typescript.locale": "zh-CN",
    // add...
    "eslint.autoFixOnSave": true,
    "eslint.validate": [
        "javascript",
        "javascriptreact",
        {
            "language": "typescript",
            "autoFix": true
        },
        {
            "language": "html",
            "autoFix": true
        },
        {
            "language": "vue",
            "autoFix": true
        }
    ]
}

五,babel-eslint

babel-eslint与typescript-eslint区别:

由于Babel抛弃了TypeScript,所以Babel-eslint不支持类型检查,支持TS没有的额外语法检查

typescript-eslint基于typescript-eslint的AST,支持创建基于类型信息的规则(tsconfig.json)

如果使用Babel体系建议使用babel-eslint,否则可以使用typescript-eslint
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BraveWangDev

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值