Sublime Text 的 TypeScript 类型检查完全依赖本地 tsserver 进程,插件不自带服务且不自动查找;tsserver_path 配错会导致静默失效,必须显式配置绝对路径并确保 tsconfig.json 在项目根目录、启用 "--project ." 选项,否则退化为无配置模式。

Sublime Text 本身不提供 TypeScript 原生编译器或类型分析能力,所谓“高精度静态类型分析”完全依赖 tsserver 进程——不是 Sublime 自己做的,而是它调用你本地安装的 TypeScript 语言服务。
为什么 tsserver_path 配错就等于没类型检查
Sublime 的 TypeScript 插件(如 TypeScript-Sublime-Plugin)不自带 tsserver,也不自动从 node_modules 或 PATH 查找。路径写错、权限不足、或指向了旧版 tsserver.js(比如 v3.x),都会导致静默失效:无报错、无提示、但所有类型提示、跳转、hover 都不工作。
- 必须在
Preferences → Package Settings → TypeScript → Settings中显式填入绝对路径,例如:"tsserver_path": "/usr/local/lib/node_modules/typescript/lib/tsserver.js"(macOS/Linux)或"tsserver_path": "C:\Users\X\AppData\Roaming\npm\node_modules\typescript\lib\tsserver.js"(Windows) - 验证路径是否有效:在终端执行
node /path/to/tsserver.js --version,应输出类似Version 5.4.5 - 若用
nvm,确保 Sublime 启动时加载的 Node 版本与你运行tsserver的一致;macOS 用户常需在~/.zshrc中补export PATH并重启 Sublime
tsconfig.json 不生效的三个隐藏条件
即使 tsserver 路径正确,tsconfig.json 也未必被读取。插件默认不强制走项目模式,很多配置(如 lib、paths、jsx)会直接忽略。
- 必须在插件设置中加
"tsserver_options": ["--project", "."],否则tsserver启动为单文件模式,不加载项目配置 -
tsconfig.json必须位于当前打开的 Sublime 项目根目录(即$project_path),不是任意子目录 - 修改
tsconfig.json后,需手动触发Ctrl+Shift+P → TypeScript: Restart Server,插件不会监听文件变更
JSX/React 类型报错却找不到原因?先看 jsx 和 module 配置
Sublime 中 JSX 标签标红、React 类型未定义、useState 提示 “Cannot find name”,往往不是缺少 @types/react,而是 tsconfig.json 的基础组合没对上。
使用 Scrapfly SDK(scrapfly-sdk)在 TypeScript 或 JavaScript 中进行网页抓取,用于用户请求抓取 URL、绕过反爬虫防护、渲染页面等场景。
-
jsx必须设为"react"或"preserve";设为"react-jsx"时,还需module为"ESNext"或"commonjs"(取决于构建链) - 确保
lib包含"dom"和"es2017"或更高(如"es2020"),否则Promises、AsyncIterator等全局类型缺失 - 若用了
paths别名,仅baseUrl不够,必须配合"tsserver_options": ["--project", "."]才能解析别名路径
保存时类型检查 vs 编译(tsc)是两件事
很多人混淆“类型检查”和“编译”。tsserver 提供实时类型分析,而 tsc 是命令行编译器——它们可以共存,但行为独立。Sublime 默认只启用前者,除非你额外配置 Build System。
- 类型检查由
tsserver驱动,响应编辑、保存、跳转等操作,不生成 JS 文件 - 要生成 JS,需另建 Build System,例如:
{"shell_cmd": "cd $project_path && tsc -p .", "file_regex": "^(.*?):([0-9]+):([0-9]+):(.*)$"} - 若同时启用了
tsserver和tsc构建,注意二者版本差异:比如tsserver是 v5.4.5,而全局tsc是 v4.9.5,可能导致类型检查结果与编译输出不一致
真正决定“高精度”的,不是插件有多炫,而是 tsserver 是否以完整项目模式运行、tsconfig.json 是否被严格遵循、以及路径和版本是否完全对齐——任何一环松动,类型系统就退化成语法高亮器。










