本页译自英文文档。命令、标识符和示例保持原样。运行时 7.24.4 · SDK 2.6.7。 英文原文
TypeScript 原生支持
状态:源码中已生效;打包运行时发行尚待完成 范围:当前状态的源码工具链与语言服务 最近审阅:2026-09-14 负责人:AX Code 维护者
AX Code 使用官方基于 Go 的 TypeScript 7.0.2 编译器,用于工作区检查、SDK 生成,以及内置的 JavaScript/TypeScript 语言服务器。语言服务器直接运行随附的原生可执行文件,并使用 --lsp --stdio。它不会调用注册表运行器,也不会下载浮动的语言服务器版本。使用 AX Code 不需要 Go 工具链。
使用 pnpm install 安装依赖,包括可选依赖。原生编译器需要匹配的操作系统与 CPU 包。独立构建会在交付前暂存并校验该包。缺失或不匹配的二进制会产生可操作的错误,而不是静默启动 JavaScript 服务器。
编译器 API 兼容性
工作区把 @typescript/native 钉在 npm:typescript@7.0.2,并把 typescript 别名到 npm:@typescript/typescript6@6.0.2,供导入旧版 JavaScript 编译器 API 的工具使用。类型检查和 SDK 生成使用原生编译器。兼容 API 不是默认语言服务器。
Vue、Svelte 和 Astro 的框架工具使用各自的服务器集成;TypeScript 库兼容性并不确立编译器插件支持。SolidJS 的 JSX 转换仍经由 Babel。运行时测试和生成产物必须独立于一次成功的类型检查而通过。
诊断与内存
原生 TypeScript 使用拉取式诊断。当调用方要求等待诊断,或收集诊断清单时,AX Code 才会请求它们。仅同步一个文件并不会等待类型检查。编辑会使依赖的缓存结果失效;过期、待处理或失败的清单会被聚合诊断 API 报告为部分或降级。一次成功的拉取会刷新该文件。服务器刷新请求把缓存结果标为过期;下一次诊断请求按需刷新它们。后台服务器流量不会续期空闲寿命。文件编辑仍可在后台刷新先前请求过的文档。原始记录 API 在有界的收集预算内刷新过期结果,并拒绝不完整清单;编辑工具会披露这一状况,同时不丢失已成功的文件编辑。其他语言服务器保留其既有的推送诊断行为。
对同一文件重叠的显式诊断等待,仅在同一工作区代次内共享一次请求。顺序请求仍会刷新;工作区变更会阻止复用更早的在途请求。后台刷新和清单刷新在等待文档锁之后重新检查新鲜度。
成功的补丁删除和移动会在语言服务中关闭被移除的源文档。失败的补丁事务保留其文档状态。清理有两秒的共享截止时间,并跳过同一补丁中被后续操作重新创建的路径。不完整的清理会被披露,同时不撤销已保存的编辑。若向服务器的投递超时,诊断保持不完整,直到该客户端重启。
空闲语言服务器在正常内存配置档下于 30 分钟后回收,在 AX_CODE_MEMORY_PROFILE=low 下则于五分钟后回收。回收运行在既有的一分钟健康检查间隔上,并等待活动请求和排队请求落定。服务器按需重启。AX_CODE_LSP_IDLE_MS 以毫秒覆盖空闲时长;0 禁用空闲回收。无效值使用配置档默认值。这些设置不施加进程 RAM 上限,也不施加整机预算。推测性预热仍需选择加入。
回收一台服务器会丢弃其诊断清单。聚合结果保持标记为降级,直到先前打开的文档被重新打开并检查,或被显式移除。原始清单 API 拒绝不完整覆盖。覆盖账本限制为 2,000 条路径;溢出在项目实例被释放之前保持保守的不完整状态。回收空服务器不会丢失覆盖。编辑工具保留已保存的更改,并披露诊断不完整。使用完整的项目类型检查来确定项目是否干净。
原生编译不保证特定幅度的常驻内存下降。在提出内存说法之前,请比较同一项目、打开的文档、请求以及进程树 RSS。
显式服务器覆盖
已有的受信任 lsp.typescript.command 配置仍会覆盖内置原生服务器。对于旧版服务器,请在项目中安装并钉住该服务器及其兼容的 TypeScript SDK,然后把 command 设为该已安装的可执行文件,方式是 --stdio。避免未钉住的 npx 命令。覆盖是显式的;当原生编译器不可用时,AX Code 不会自动回退。
上游:TypeScript 7 公告。
TypeScript 7.0.2 已保存文档兼容性
当文件监视流量与已保存编辑重叠时,原生 7.0.2 服务器可能返回更早的诊断快照。针对该精确服务器版本,AX Code 会在请求诊断之前关闭并重新打开已更改的文档。一次有界的文档查询会在重新打开之前刷出延迟的关闭;其他查询等待这次替换。这会发送完整的已更改文档;未更改的文档仍复用重叠请求。其他服务器版本保持其协商的同步模式。被中断的替换保持不完整,直到语言服务器重启。