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

如何在tsconfig中添加自定义类型且不覆盖默认@types导入?

如何在tsconfig中添加自定义类型且不覆盖默认@types导入?

嘿,我刚好碰到过类似的问题,给你捋捋怎么解决!

我在项目里用Vite做打包和开发服务,Vite支持直接通过路径导入图片,写法是这样的:

import logo from './assets/logo.png';

但TypeScript根本认不出这种导入方式,好在Vite提供了对应的类型定义文件client.d.ts来解决这个问题。官方推荐的方案之一是通过tsconfig的编译选项来引入这个类型,不过我当时纠结的点是——怎么加这个自定义类型,同时又不把默认的@types包给覆盖掉?

其实很简单!默认情况下,如果你的tsconfig.json里设置了compilerOptions.types数组,TypeScript只会加载数组里指定的类型,而不会自动加载@types目录下的所有默认类型。所以要避免覆盖的话,你只需要把自定义类型和你需要的默认类型都一起放到types数组里就行。

举个例子,如果你的项目本来依赖node和jest的默认类型,那配置就写成这样:

"compilerOptions": {
  "types": ["node", "jest", "vite/client"]
}

这样TS就会同时加载这些指定的类型,以及所有@types下的相关类型啦。要是你只写"types": ["vite/client"],那默认的@types就会被忽略,这就是问题所在。

另外还有个更省事的办法:只要你的client.d.ts文件在TypeScript的扫描范围内(比如放在项目根目录或者src文件夹下,并且tsconfig的include配置包含了这个文件),其实完全不用特意在types里配置,TS会自动识别并加载这个类型文件。不过如果你更倾向于用types选项来明确管理依赖的类型,那上面的方法就最稳妥。

备注:内容来源于stack exchange,提问作者Basti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 17:03:19