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

如何配置TypeScript仅检查本地*.d.ts文件,跳过node_modules?

解决TypeScript检查本地*.d.ts同时跳过node_modules类型问题

针对你遇到的情况,有几个可行的方案:

方案1:精准排除有问题的依赖类型文件

不需要全局开启skipLibCheck: true,而是在tsconfig.json中用exclude字段单独排除导致vitest报错的特定依赖类型。比如如果是某个@types包冲突或缺失:

{
  "compilerOptions": {
    // 保留你的其他编译选项
  },
  "exclude": [
    "node_modules/@types/some-problematic-vitest-dependency",
    // 按需添加其他有问题的依赖路径
  ],
  "include": [
    "types/**/*.d.ts",
    // 你的项目源码文件
  ]
}

这样TypeScript会继续检查你本地types/*.d.ts的类型,同时跳过指定的有问题依赖类型,解决vitest的报错。

方案2:用typeRoots限定类型检查范围

通过typeRoots配置,让TypeScript只加载你指定的类型文件夹和必要的依赖类型,忽略node_modules中其他无关的类型文件:

{
  "compilerOptions": {
    "typeRoots": [
      "./types", // 你的本地类型文件夹
      "./node_modules/@types/node", // 按需保留必要的基础类型(比如Node.js)
      "./node_modules/@types/vitest" // vitest的必要类型
    ],
    // 其他编译选项
  },
  "include": [
    "types/**/*.d.ts",
    // 你的项目源码文件
  ]
}

这种方式既避免了加载node_modules中所有可能出错的类型,又能确保你的本地类型定义被检查。

方案3:将本地类型定义改为.ts文件

skipLibCheck: true只会跳过.d.ts类型声明文件的检查,如果你把本地的类型定义从.d.ts改成普通的.ts文件(比如src/types/index.ts,直接导出类型或写declare语句),那么即使开启skipLibCheck: true,TypeScript依然会检查这些.ts文件的类型,同时解决vitest的依赖问题:

// src/types/index.ts
export interface MyCustomType {
  id: string;
  name: string;
}

declare module 'some-module' {
  // 模块类型定义
}

然后在tsconfig.json中确保这些文件被包含:

{
  "compilerOptions": {
    "skipLibCheck": true
  },
  "include": [
    "src/types/**/*.ts",
    // 其他源码文件
  ]
}

内容的提问来源于stack exchange,提问作者philolegein

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 20:12:44