TypeScript include 和 exclude 怎么用

在前端开发里,我们写代码总免不了“拉帮结派”——不同功能的代码文件就像不同小组的同事,得明确谁该参与项目、谁该待在门外。TypeScript 里的 include 和 exclude,就是用来管这些文件“准入资格”的工具,简单说就是“哪些文件要编译”和“哪些别来添乱”。

先搞懂:它们到底管啥用?

TypeScript 要把我们写的 .ts、.tsx 文件转成浏览器能懂的 JS,这中间得先选好要编译的文件。include 就是“白名单”,列出来的文件才会被处理;exclude 是“黑名单”,列出来的就算在白名单里,也会被排除在外——就像公司招聘,先看简历(include),但明确说不要应届生(exclude),就算简历里写了是应届生,也通不过。

TypeScript include 和 exclude 怎么用

举个生活化例子:你负责做一个美食分享网站,代码有 src 里的所有 .ts 文件,还有测试用的 test 文件夹里的测试脚本、node_modules 里的第三方依赖。正常情况下,你肯定只想编译 src 里的业务代码,不想把测试文件和第三方库混进去。这时候 include 就写 src,exclude 写上 test 和 node_modules,项目就会只处理需要的文件了。

include:把要编译的文件“划进圈”

include 支持三种写法,都是前端里很常见的路径规则,哪怕你是新手也能直接上手。

第一种是直接写文件名:比如 include: ["index.ts"],就是只编译根目录下的 index.ts 文件,就像你只带当天要穿的那件外套出门,别的都放家里。

第二种是用通配符 *:* 代表“任意字符”,比如 include: ["src/*.ts"],就是编译 src 文件夹里所有后缀是 .ts 的文件——相当于你从衣柜里挑所有带花纹的衣服,不管款式。

第三种是用双通配符 : 代表“任意子文件夹”,比如 include: ["src/**/*.ts"],就是把 src 里所有子文件夹里的 .ts 文件都算进来,这就像你整个衣柜里的所有带花纹的衣服,不管在哪个抽屉、哪一层。

这里有个小细节要注意:如果 tsconfig.json 里没写 include,TypeScript 默认会编译项目里所有的 .ts 文件(除了 exclude 里的),但如果写了 include,就只会处理 include 里列的文件,不会“多管闲事”。

exclude:把不想编译的文件“踢出去”

exclude 通常和 include 搭配用,专门用来排除那些 include 可能误包含的文件,最常见的场景就是排除测试文件和第三方依赖。

比如你写了 include: ["src/**/*"],本来要把 src 里所有文件都编译,但 src 里还有 test 文件夹,里面放的是测试代码,这些代码不需要参与项目编译,也不能出现在最终的 JS 里。这时候就加 exclude: ["src/test"],这样就算 include 里包含了 src 所有文件,test 文件夹里的内容也会被排除。

还有个很实用的场景:node_modules 里的代码都是第三方写好的,TypeScript 不需要编译它们,而且如果把这些文件加进来,不仅会拖慢编译速度,还容易出错,所以几乎所有项目的 exclude 都会加上 node_modules。

另外,exclude 还有个小技巧:如果你的 include 里没写某个文件,就算 exclude 也没用——exclude 只能“踢掉 include 里的文件”,不能直接把文件从编译列表里删掉,就像你不能把没邀请的客人从家里赶出去,只有先邀请了(include),才能再拒绝(exclude)。

实际用的时候要避开这些坑

很多新手第一次用的时候容易踩两个小坑。第一个是路径写错:比如 exclude 里写了 "./src/test",但实际文件夹名是 tests,这就会导致排除失败,就像你要把朋友的房间锁起来,却走错了房间号。第二个是忽略了 .d.ts 文件:如果你的项目里有声明文件,不想让 TypeScript 处理,记得把它们加进 exclude 里,不然可能会出现重复定义的错误。

简单来说,include 和 exclude 就像给 TypeScript 的编译文件“设门禁”:include 是只允许名单上的文件进来,exclude 是把进来的某些特定文件再请出去,搭配着用,就能精准控制要编译的代码,让 TypeScript 只处理你真正需要的内容,既省时间又少出错。

上一篇 Java 权限修饰符有哪些