废弃方法仍在补全列表里,是因为VSCode仅原样展示语言服务器提供的符号,是否隐藏取决于:.d.ts文件是否含标准@deprecated注释、语言服务器是否启用弃用过滤(如Pylance需typeCheckingMode为basic)、本地类型包是否最新;根本解决法是设"editor.suggest.showDeprecated": false,该全局配置使所有带@deprecated标记项彻底不显示。

为什么废弃方法还在补全列表里
VSCode 本身不判断废弃,它只是把语言服务器(如 TypeScript Server、Pylance)提供的符号原样展示。是否隐藏带 @deprecated 标签的方法,取决于三件事:类型定义文件(.d.ts)里是否真写了标准弃用注释;语言服务器是否启用弃用过滤(TypeScript 默认开启,但 Python 的 Pylance 需 python.analysis.typeCheckingMode 设为 basic 才严格读取);你本地装的是否是最新版类型包(比如 @types/react 18.2+ 才给 findDOMNode 加了弃用标记)。
必须设的全局开关:editor.suggest.showDeprecated
这个配置项是唯一真正起效的通用压制手段——设为 false 后,所有带 @deprecated 标签的项直接不出现在补全列表里(不是灰掉,是彻底不显示)。它不依赖语言或插件,生效范围覆盖 JavaScript、TypeScript、Python(Pylance)、PHP(Intelephense)等所有支持弃用标记的语言。
操作方式:打开 settings.json,加这一行:
"editor.suggest.showDeprecated": false
注意:
- 不要在 GUI 设置界面找“隐藏 deprecated”开关,它不存在
- 如果已安装 ESLint 或其他 Linter,这个设置不会影响它们的警告,只管 IntelliSense 补全
- 修改后无需重启,新打开的编辑器窗口立即生效
如何确认某个方法确实被标记为废弃
右键点击疑似废弃的方法名(如 document.write),选「转到类型定义」。观察跳转路径:
- 如果是
lib.dom.d.ts,说明来自 TS 内置 DOM 库——升级 VSCode 和 TypeScript 插件即可(2026 年 5 月起新版已移除大量已废 API) - 如果是
@types/lodash这类第三方包,运行npm outdated @types/lodash检查版本,再npm install @types/lodash@latest - 如果跳转失败或指向一个空文件,说明当前类型定义根本没标注
@deprecated,此时补全列表里出现它属于正常现象,不是配置问题
PHP 和 Python 的额外注意事项
PHP 用户需确保 Intelephense 已激活(右下角无 “Limited Mode” 提示),且 intelephense.stubs 包含对应 PHP 版本的内置函数集;Python 用户必须禁用 python.languageServer 的 Jedi(它完全不识别 @deprecated),改用 Pylance。
容易被忽略的一点:即使设置了 editor.suggest.showDeprecated,若语言服务器未加载成功(状态栏显示 Plain Text 或一直转圈),该设置也无效。务必先确认右下角语言模式正确、对应插件已启用、项目根目录有合法配置文件(如 pyproject.toml 或 tsconfig.json)。


















