Stackblitz代码补全正常但IntelliJ失效,如何让其使用正确类型文件?
问题背景
复现问题的仓库为:mathjs-typescript-types
Stackblitz可正常使用
在Stackblitz中打开项目时,代码补全功能正常:
IntelliJ无法正常使用
IntelliJ(2022.2.3 Ultimate)中的代码补全功能失效:
当Ctrl+点击MathJsStatic导入符号时,IntelliJ显示两个选项:
且它默认使用了错误的类型(定义在node_modules/mathjs/types/index.ts中):
问题
如何让IntelliJ使用index.d.ts中的正确类型并忽略index.ts?
解决方法
配置tsconfig.json规则
在项目根目录的tsconfig.json中,通过include和exclude明确指定文件范围,确保自定义index.d.ts被优先识别,排除错误的index.ts:{ "compilerOptions": { // 保留原有编译选项 }, "include": [ "./index.d.ts", "./src/**/*" ], "exclude": [ "node_modules/mathjs/types/index.ts" ] }调整IntelliJ索引排除规则
- 打开IntelliJ设置(Windows/Linux:Ctrl+Alt+S;Mac:Cmd+,)
- 进入
Languages & Frameworks > TypeScript - 在
Files页签下,将node_modules/mathjs/types/index.ts添加到Excluded files列表 - 点击
Apply后,选择File > Invalidate Caches... > Invalidate and Restart重启IDE并重新索引
指定类型查找优先级
在tsconfig.json的compilerOptions中添加typeRoots,让TypeScript优先查找自定义类型目录:{ "compilerOptions": { "typeRoots": ["./types", "./node_modules/@types"] } }
内容的提问来源于stack exchange,提问作者TmTron
相关产品推荐
相关产品推荐

