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

VSCode自动类型获取失效(含ESM/CJS项目),如何恢复原行为?

问题原因

TypeScript 5.6及以上版本默认禁用了自动类型获取功能——也就是之前VSCode自动从DefinitelyTyped拉取@types包的机制。微软调整这个行为的目的是减少无意义的网络请求、优化项目加载性能,同时让类型依赖的管理更透明可控。

你在%LOCALAPPDATA%\Microsoft\TypeScript目录看到的差异也印证了这点:5.5版本保留了之前自动缓存的类型文件,而5.6、5.7因为功能被禁用,仅生成空的package.json占位,没有再自动拉取类型。

恢复原有自动获取行为的方法

1. 全局VSCode设置恢复

打开VSCode设置(快捷键Ctrl+,),搜索typescript.disableAutomaticTypeAcquisition,将其设置为false。也可以直接编辑settings.json添加:

{
  "typescript.disableAutomaticTypeAcquisition": false
}

这个设置会对所有项目生效,恢复全局的自动类型获取能力。

2. 项目级精准配置

如果不想全局开启,可在项目根目录的tsconfig.json中添加typeAcquisition配置,仅对当前项目生效:

{
  "compilerOptions": {
    // 保留你的现有编译选项,比如moduleResolution建议设为NodeNext/Node16以适配ESM+CJS混合场景
  },
  "typeAcquisition": {
    "enable": true,
    // 可选:指定需要自动获取类型的包,不填则默认对所有无本地类型的包生效
    "include": ["fs-extra", "lodash"]
  }
}

3. 额外注意事项

  • 若项目的devDependencies中已经手动安装了某个包的@types/xxx,TypeScript会优先使用本地安装的类型,不会再自动拉取。
  • 对于ESM项目,确保tsconfig.json的module设为ESNext或NodeNext,moduleResolution设为NodeNext或Node16,这样TypeScript能正确解析CJS包的导入类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:43:15