最近在给Vsnips增加lint功能, 主要是之前写的代码实在太放飞自我了, 未来多人协作的时候, 还是有必要保持一样的风格. 在咨询了前端的同事后, 得知tslint已经停止支持, 决定将tslint换成eslint.

切换到eslint

1
2
3
4
5
6
7
8
# 卸载tslint
npm uninstall tslint

# 安装eslint
npm i -d eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin

# 命令行下使用, 直接调用node_modules下的执行文件
./node_modules/.bin/eslint --ext .ts src

no-unused-vars问题

这个是困扰我最大的一个问题, 然而却没有人写博客, 看来真正在TypeScript中使用eslint的人并不多.

我简单描述下现象:

1
2
3
import { ILogger } from "js-logger/src/types";

const myLogger: ILogger = jsLogger.get("Vsnips");
1
2
/home/corvo/Project/Vsnips/src/logger.ts
19:10 error 'ILogger' is defined but never used no-unused-vars

会给出这样的报错, 可以看到ILogger其实已经作为类型使用了, 但是eslint仍然认为它没使用, 搜索了一下, 有朋友遇到了类似的问题.

请教下,typescript导入interface报的no-unused-vars怎么解决

在此问题下有人提到了解决方案, 不过并没有给出配置, 我贴一下自己的配置, 把eslint的原始功能关闭, 使用typescript提供的功能.

1
2
3
4
5
6
{
"rules": {
"no-unused-vars": "off",
"@typescript-eslint/no-unused-vars": "warn"
}
}

选择性忽略

官方文档: 设置某些行不进行检查

在tslint中使用下面的方式忽略一行,

// tslint:disable-next-line

换成了eslint之后, 修改为:

// eslint-disable-next-line

我在项目中就用了这两种, 大家按需使用吧.

1
2
3
4
5
6
/* eslint-disable */
alert('foo');
/* eslint-enable */

// eslint-disable-next-line
alert('foo');