sublime text 的 typescript 类型检查必须通过 lsp 插件配合 typescript-language-server 实现,tslint 已废弃;需正确安装 lsp、全局或项目级 typescript-language-server 和 tsserver,配置 enabled、command 与 tsserverpath,并确保语法设为 typescript、tsconfig.json 存在且重启 lsp 服务生效。

Sublime Text 本身不提供 TypeScript 类型检查,必须靠 TypeScript Language Server(通过 LSP 插件)或 SublimeLinter-tslint(已废弃)这类外部服务驱动——但注意:TSLint 已于 2019 年停止维护,现在唯一可靠路径是 LSP + typescript-language-server。
装对插件:LSP 而不是 SublimeLinter-eslint 那套
很多人卡在这一步:误以为装 SublimeLinter + SublimeLinter-tslint 就能检查 TS,结果要么报错找不到命令,要么完全没反应。TSLint 已死,typescript-language-server 是当前事实标准,它只通过 LSP 协议通信,和 SublimeLinter 完全不兼容。
- 必须安装
LSP插件(不是SublimeLinter):通过 Package Control 搜索并安装LSP - 再安装语言服务器本体:
npm install -g typescript-language-server;验证是否可用:终端运行typescript-language-server --version应输出版本号 - 别装
SublimeLinter-tslint或SublimeLinter-typescript—— 这两个包早已失效或仅支持旧版 TSC - 确保文件语法设为
TypeScript(View → Syntax → TypeScript),否则 LSP 不会激活
配置 LSP 启用 TS 支持:关键在 settings 中的 enabled 和 initializationOptions
LSP 默认不自动启用 TypeScript 支持,即使你装了服务器,也得手动打开开关并指定 tsserver 路径(因为 typescript-language-server 依赖本地 tsserver)。否则你会看到“no language server for typescript”或光标悬停无提示。
- 打开 Preferences → Package Settings → LSP → Settings,在
clients下添加typescript-language-server配置块 -
enabled必须设为true,且selector匹配source.ts, source.tsx -
command要写全路径,比如["typescript-language-server", "--stdio"];若全局命令不可见(尤其 macOS + nvm / Windows + npm 全局路径异常),改用绝对路径:["/Users/you/.npm-global/bin/typescript-language-server", "--stdio"] -
initializationOptions里加"tsserverPath":指向你本地tsserver,例如"node_modules/typescript/lib/tsserver.js"(项目级)或全局安装路径(如/usr/local/lib/node_modules/typescript/lib/tsserver.js)
类型检查触发时机:不是保存即跑,而是「编辑时增量检查」
和 VS Code 不同,LSP 在 Sublime 中默认采用轻量策略:只有当你正在编辑、切换到 TS 文件、或手动触发 LSP: Restart Server 时才拉起 tsserver。它不会监听整个 node_modules 或自动重载 tsconfig.json 变更——这意味着改了配置常要手动重启服务。
- 错误/警告实时出现在行号左侧(红点/黄点),悬停显示详情;但不会像 Webpack 那样在保存后弹出完整报告面板
- 修改
tsconfig.json后,必须执行命令面板里的LSP: Restart Server,否则新配置不生效 - 如果某行突然不报错了,先检查是否误删了类型注解、是否被
// @ts-ignore压制,而不是怀疑插件坏了 - 大型项目首次打开可能卡顿几秒——这是
tsserver在构建语义模型,属正常现象,不是插件响应慢
常见静默失败原因:PATH、语法识别、tsserver 版本错配
最常遇到的问题不是“怎么配”,而是“配了但没反应”,且控制台(Ctrl+`)里几乎不报错——这恰恰说明问题出在环境链路断开,而非配置语法错误。
- 在 Sublime 控制台中运行
import os; print(os.environ.get('PATH')),确认输出包含npm全局 bin 路径(如/Users/you/.npm-global/bin);Windows 用户注意 Sublime 继承的是系统 PATH,不是 PowerShell 的临时 PATH - 右下角状态栏必须显示
TypeScript或TypeScriptReact,显示Plain Text或JavaScript就意味着 LSP 根本没收到请求 -
typescript-language-server和本地tsserver版本需兼容:v1.10.x 的 server 要求 tsserver ≥ 5.0;用npx tsc --version查看项目内版本,若不一致,建议统一用npx typescript-language-server --stdio启动(自动匹配项目内 TS) - 项目根目录下没有
tsconfig.json?那tsserver会退化为“单文件模式”,无法跨文件解析类型,很多引用错误就不会报
真正麻烦的从来不是装几个插件,而是让 Node、tsserver、LSP、Sublime 四层环境在 PATH、权限、版本上全部对齐——尤其是团队协作时,有人用 pnpm、有人用 bun、有人全局装 TS、有人只在项目里装,这些差异都会导致同一份配置在不同机器上一个报错一个静默。











