You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:@types文件夹未被tsc编译的问题排查

解决TypeScript编译时未包含@types文件夹的问题

先理清你的情况:你有自定义的@types文件夹(不是node_modules里的官方类型包),但执行npx tsc时它没被纳入编译范围,同时你采用了继承式的tsconfig配置。下面是具体的排查和解决步骤:

问题根源分析

  1. include配置的覆盖特性:使用extends继承tsconfig时,子配置(tsconfig.json)里的include会完全替换父配置(tsconfig.base.json)的include。你当前tsconfig.json的include仅包含src/**/*,所以父配置里的其他路径会被直接覆盖,无法生效。
  2. 自定义@types需显式声明:TypeScript默认只会自动处理node_modules/@types里的类型定义,但你项目中自行创建的@types文件夹(比如根目录或src下的自定义类型目录),必须手动加入include才能被编译流程处理。

具体解决方案

情况1:@types文件夹在src目录下(比如src/@types)

理论上src/**/*已经能匹配到该目录,但如果没生效,你可以显式指定路径确保覆盖:
修改tsconfig.json的include字段:

"include": [
  "src/**/*",
  "src/@types/**/*"
]

你也可以先执行npx tsc --listFiles命令,查看tsc实际处理的文件列表,确认src/@types下的文件是否在其中,快速定位问题。

情况2:@types文件夹在项目根目录下(和src同级)

需要在include里直接添加这个路径,比如修改tsconfig.json:

"include": [
  "src/**/*",
  "@types/**/*"
]

如果希望所有继承base配置的子配置都包含@types,也可以修改tsconfig.base.json的include:

"include": [
  "tests/**/*.test.ts",
  "src/**/*",
  "@types/**/*"
]

额外注意事项

  • npx tsc --listFiles是排查这类路径问题的实用命令,能直观看到tsc到底处理了哪些文件,快速确认@types是否被纳入编译范围。
  • 你的配置已经开启declaration: true,只要@types被成功包含,编译后的.d.ts文件会自动输出到outDir指定的build文件夹。
  • 确认@types文件夹没有被exclude规则命中,你的配置里排除了node_modules和dist,只要@types不在这些目录下就不会被过滤。

内容的提问来源于stack exchange,提问作者Anthony Luzquiños

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 06:51:24