为什么你的TypeScript项目里,总会有几个.d.ts文件?

为什么你的 TypeScript 项目里,总会有几个 .d.ts 文件?

——2025 年真实项目里,这 9 种 .d.ts 文件你一个都逃不掉(敢删一个试试?)

我把 2025 年主流 TS 项目(React/Vue3/Next.js/NestJS/Node)里最常见的 .d.ts 文件全部扒出来,按“删了会死”程度排序,给你讲清楚它们到底是干嘛的,敢不敢删。

排名文件名 / 位置它是干嘛的?(一句话)敢删吗?后果是什么?真实项目出镜率
1src/types/global.d.ts给全局变量(如 window、process.env)打补丁删了 window.__APP_CONFIG__ 直接红,Vite 报错,CI 直接挂99.9%
2src/shims-vue.d.tsvue-shims.d.ts.vue 单文件能被 TS 识别删了所有 .vue 文件直接报 “无法找到模块 xxx.vue”100%(Vue项目)
3src/env.d.tsVite 自动生成,给 import.meta.env 提供类型提示删了 import.meta.env.VITE_API_URL 直接红,开发体验暴跌98%(Vite项目)
4src/types/index.d.ts放项目内公共类型(User、Response、枚举等)删了全项目类型引用断链,几十个红波浪95%
5node_modules/@types/*.d.ts第三方库的类型定义(比如 @types/lodash、@types/node)不能删,删了 lodash 直接 any 地狱,TS 失去意义90%
6src/types/api.d.ts自动生成的接口类型(通过 swagger-to-ts、openapi-typescript)删了所有接口调用参数提示全没了,写请求像原始人85%(中大型项目)
7src/vite-env.d.tsVite 官方模板自带的,引用 env.d.ts删了没事,但 Vite 官方模板会重新生成,属于“官方强迫症”80%
8src/components.d.tsVue3 + Volar 自动生成,给全局组件 <ElButton /> 提供提示删了全局组件不提示,手写组件名容易写错70%(Vue3)
9types/module-augmentation.d.ts给第三方库打猴子补丁(比如给 express.Request 加 user 属性)删了登录态 req.user 直接红,NestJS 项目直接崩60%(后端TS)

真实案例:我见过最离谱的 .d.ts 依赖链(删一个死一片)

// 1. src/env.d.ts(Vite 自动生成)
/// <reference types="vite/client" />

// 2. src/shims-vue.d.ts
declare module '*.vue' { ... }

// 3. src/types/global.d.ts
interface Window {
  __APP_VERSION__: string;
  gtag: (...args: any[]) => void;
}

// 4. src/components.d.ts(Volar 自动生成)
declare module 'vue' {
  export interface GlobalComponents {
    RouterLink: typeof import('vue-router')['RouterLink']
    ElButton: typeof import('element-plus')['ElButton']
  }
}

这四个文件随便删一个,整个项目红成圣诞树。

2025 年新趋势:.d.ts 正在悄悄减少

趋势说明代表项目
package.jsonexports + types 字段库作者直接内置类型,不再需要 @types/xxxVue3、Pinia、TanStack
/// <reference types="..." />tsconfig.jsontypes 取代现代项目几乎不写 reference 了Next.js 15
自动生成工具(openapi-typescript、unplugin-vue-components)开发时自动生成 components.d.ts、api.d.ts,提交到 git 就行99%的中大型项目

终极结论

你项目里那几个 .d.ts 文件不是“垃圾”,而是 TypeScript 能在复杂项目里活下去的生命线
2025 年了,还在问“能不能删 .d.ts”?
可以,但后果自负——全项目红成血海,体验回到 2018 年。

所以,下次有人让你“清理无用文件”的时候,
把这张表甩给他:“你先删个试试?”

你现在项目里最依赖哪个 .d.ts 是哪一个?敢不敢贴出来让我帮你看看能不能干掉它?

文章已创建 3123

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部