SuperAPI AI 工具集

typescript-lsp

编程与开发

查看项目

更新于 10-15 20:12

技能介绍

用途:在 clickhouse-js 仓库中通过 TypeScript 语言服务器(typescript-language-server)进行精确的代码智能查询,例如跳转定义、查找引用、悬停查看签名、工作区符号搜索和上下文补全。

主要能力:typescript-language-server 是根级 devDependency,执行 npm install 后可通过 npx 使用,并采用工作区本地的 TypeScript 6.x 编译器,与 CI 保持一致。已验证能力包括:textDocument/hover 返回完整推断签名与 JSDoc markdown;textDocument/definition 通过源码而非 dist/ 跨工作区包解析;textDocument/references 在已打开文件所属项目内查找;workspace/symbol 可查询如 ClickHouseClient 找到类与再导出;textDocument/completion 提供上下文感知的成员补全。

使用方式:在仓库根目录运行 npx typescript-language-server --stdio。它通过 stdio 使用 LSP(JSON-RPC,Content-Length 分帧),无需额外配置;每个 packages/* 工作区、tests/clickhouse-test-runner、examples/node 和 examples/web 都有自己的 tsconfig.json,服务器会按打开文件自动选择最近的配置。协议要点:发送 initialize,rootUri/workspaceFolders 指向仓库根,然后发送 initialized 通知;对每个要查询的文件发送 textDocument/didOpen 并附完整文件文本(服务器自行从磁盘读取依赖,只有需要查询位置的文件才需打开);位置为 0 基(行和字符)。

适用场景:适合在编辑器中或脚本化查询中进行交互式、针对性的代码智能操作。若环境自带 LSP/代码智能工具,可将其指向 npx typescript-language-server --stdio 并以仓库根为工作区文件夹。一次性脚本查询可从 Node 启动服务器,用 Content-Length: <bytes>\r\n\r\n<json> 分帧消息,并按 id 匹配响应。

限制:诊断仅支持推送(textDocument/publishDiagnostics 通知,didOpen 后约 1–3 秒发送),不支持拉取式 textDocument/diagnostic 请求(返回 -32601),需等待推送通知。完整的全工作区类型检查仍应使用 npm run build && npm run typecheck(先构建,因为部分工作区导入编译后的 dist/ 输出);LSP 用于针对性交互查询,不等同于 CI 验证。