VS Code自动替换getServerSideProps关联组件类型,求排查原因
自动修改Next.js组件类型定义的原因排查
可能的触发源
既然你已经禁用了所有扩展,排除了ESLint、Prettier等工具,问题大概率来自以下两个方向:
VS Code内置TypeScript语言服务的自动类型修复/补全
Next.js的@types/next类型定义中包含InferGetServerSidePropsType,VS Code的内置TS服务会识别到组件props与getServerSideProps返回值的关联,当开启了自动修复或类型补全相关配置时,会自动替换组件的类型定义。
重点检查VS Code设置中以下选项:editor.codeActionsOnSave:是否开启了source.fixAll或typescript.fixAll自动修复typescript.suggest.autoImports:是否开启了自动导入类型并替换现有定义typescript.preferences.preferInferrableTypes:是否优先使用推断类型覆盖显式定义
Next.js类型定义的内置逻辑
项目中引入的next-env.d.ts会自动注入Next.js的类型增强,TS语言服务在解析getServerSideProps时,会触发针对组件props的类型推断建议,若你的VS Code开启了"接受建议自动应用"的相关设置,就会自动替换类型。
解决步骤
- 打开VS Code设置(快捷键
Ctrl+,),搜索editor.codeActionsOnSave,将所有自动修复项设为false,比如:"editor.codeActionsOnSave": { "source.fixAll": false, "typescript.fixAll": false } - 搜索
typescript.suggest.autoImports,将其设置为false,关闭自动导入类型的功能。 - 搜索
typescript.preferences.preferInferrableTypes,设为false,避免推断类型覆盖你手动定义的AccountProps。 - 若问题仍存在,可尝试删除项目根目录的
.next文件夹,重新构建项目,清除可能存在的缓存类型配置。
内容的提问来源于stack exchange,提问作者kmunky
相关产品推荐
相关产品推荐

