tsconfig.json与tslint.json配置规则有何区别及相关使用疑问
tsconfig.json 与 tslint.json 配置规则的核心区别
嗨,这个问题问到点子上了!很多刚接触TypeScript的同学都会混淆这俩文件,我来给你拆解清楚,顺便聊聊你提到的编辑器兼容问题~
一、核心定位完全不同
这俩文件根本不是一个赛道的:
tsconfig.json:它是TypeScript编译器(
tsc)的专属配置文件,管的是代码编译环节的规则。比如:- 指定哪些TS文件要参与编译,哪些要排除
- 设置编译后JS文件的输出目录、目标JS版本(比如ES5/ES6)
- 开启严格模式(
strict: true)、禁止隐式any类型、检查未使用变量这类编译级别的约束
说白了,它是告诉TypeScript“怎么把TS代码转成合法的JS代码”,是编译流程的核心配置。
tslint.json:它是TSLint这个静态代码检查工具的配置文件,管的是代码风格和代码质量规范。比如:
- 强制缩进用2个空格还是4个
- 禁止使用
var,要求用let/const - 检查函数参数是否必须加类型注解
- 禁止出现未使用的导入模块
它不参与代码编译,只是帮你找出不符合团队规范的代码,相当于一个“代码质检员”。
二、生效方式与依赖不同
- tsconfig.json:只要你用
tsc命令编译TS代码,编译器会自动读取项目根目录的这个文件,不需要额外安装插件(编辑器里装TypeScript插件只是为了实时提示,编译本身完全依赖这个文件)。 - tslint.json:必须先安装TSLint工具(
npm install tslint --save-dev),而且编辑器要装对应的TSLint插件才能实时看到代码提示。如果团队成员用的编辑器没有TSLint插件支持,那只能在命令行手动运行tslint命令来做检查,确实很不方便。
三、“规则重叠”的本质区别
你觉得两者能实现相同效果,其实是有些规则两边都有,但本质逻辑不一样:
比如“禁止未使用的变量”:
- tsconfig里的
noUnusedLocals是编译时检查,违反的话直接导致编译失败,根本生成不了JS文件; - tslint里的
no-unused-variable是静态检查,只会给你标红提示,默认不会阻止编译(除非你在CI流程里配置了lint失败就终止)。
再比如“隐式any类型”:
- tsconfig的
noImplicitAny是编译层面强制要求必须给变量加类型,否则编译不通过; - tslint的
no-implicit-any只是代码风格提醒,告诉你“这里最好加类型”,但不会卡编译。
关于编辑器兼容的小建议
其实TSLint已经被官方废弃了,现在社区主流都是用ESLint + @typescript-eslint插件来做TS代码检查。ESLint的编辑器支持度极高,几乎所有主流编辑器(VSCode、WebStorm、Sublime等)都有对应的ESLint插件,团队成员不管用什么编辑器,只要装了ESLint插件就能实时看到规范提示,比TSLint靠谱多了。
内容的提问来源于stack exchange,提问作者zer0
相关产品推荐
相关产品推荐

