vscode-language-babel目前不支持es2024语法高亮,因其完全依赖babel parser的ast能力,而babel 8.14仍处于beta阶段,对array.fromasync、using声明等es2024特性仅提供实验性支持,尚未纳入稳定语法定义。

Babel JavaScript 插件目前不支持 ES2024 规范语法高亮——它根本识别不了,不是配错、不是没启用,是语言定义里压根没这玩意。
为什么装了 vscode-language-babel 还是高亮不了 ES2024 新语法
Babel 官方本身都还没正式发布对 ES2024(比如 Array.fromAsync、Promise.withResolvers、装饰器 Stage 3 最终提案等)的稳定解析支持,VS Code 插件 vscode-language-babel 只是复用 Babel 的语法定义(即 @babel/parser 的 AST 能力),它不会“超前实现”未被 Babel 接纳的语法。
你看到的所谓“ES2024 支持”,基本来自两类误判:
- 把 Stage 3 提案当已定标准(例如装饰器在 2024 年 3 月才刚进入 Stage 3,Babel 8.12+ 才开始实验性支持)
- 把 TypeScript 的语法高亮错当成 JavaScript —— TS 语言服务能识别部分新 API 类型,但那和 JS 语法高亮无关
vscode-language-babel 实际覆盖的语法边界
它当前(截至 2026 年 5 月最新版 v0.0.34)能稳定高亮的是:
- ES2023 及之前所有正式标准:
array.at()、Object.hasOwn()、findLast/findLastIndex等 - Stage 3 且已被 Babel 主干合并的特性:如
decorator(需开启decorators-legacy或decorators插件) - JSX + Flow + GraphQL 模板字符串(前提是标记函数名匹配配置,如
gql、css、styled)
如果你写了个 using 声明(using disposable = new Disposable()),它不会高亮——这不是插件 bug,是 Babel parser 还没把它当作合法语法节点输出。
想让新语法“看起来有高亮”,只能绕过语法层
真要临时应对,有两条现实路径:
- 改用
TypeScript语言模式:在 JS 文件顶部加// @ts-check,再配合jsconfig.json启用类型检查,VS Code 的 TS 服务会把部分新 API 当作全局变量高亮(颜色浅但至少有) - 手动触发语言模式切换:打开文件后按
Ctrl+K M→ 输入JavaScript (Babel)确认,避免 VS Code 自动 fallback 到默认JavaScript模式(后者连??=都不认) - 禁用冲突插件:尤其
ESLint插件若启用了parser: '@typescript-eslint/parser',可能干扰语法树生成,导致高亮失效
真正该盯住的地方不是插件,而是 Babel 本身
ES2024 相关语法能否高亮,取决于三个环节是否同步:
- Babel parser 是否已 merge 对应 PR(查 Babel PR 列表)
-
@babel/parsernpm 包是否发布了含该支持的版本(看 changelog) -
vscode-language-babel是否更新了依赖并重新打包语法定义(它不自己写 grammar,只封装 Babel 输出)
现在(2026 年 5 月)连 Babel 8.14 都还在 beta 阶段,里面关于 using 和 array.fromAsync 的支持仍标为 experimental。别等插件,先盯 Babel 官方仓库的 CHANGELOG.md 和 packages/babel-parser/ast/spec.md 更新。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











