TypeScript 7 新增工作区符号搜索范围:用 `workspaceSymbols.scope` 把符号搜索限定到当前项目
文档教程【免费下载链接】typescript-bookThe Concise TypeScript Book: A Concise Guide to Effective Development in TypeScript. Free and Open Source.项目地址https://gitcode.com/gh_mirrors/typ/typescript-book点击查看免费下载本指南基于本仓库 TypeScript News 新闻栏目含 捷克语版编写介绍 TypeScript 7 原生语言服务新增的workspaceSymbols.scope偏好设置在多项目工作区中如何把工作区符号搜索即编辑器里按符号名全局跳转、如Go to Symbol in Workspace的结果集从所有已打开项目收敛到当前项目。读完本文你将理解该设置的两个取值及其语义、VS Code 原生扩展如何配合传递上下文文档以及为何这一变更被设计为显式开启opt-in的行为。背景TypeScript 7 的原生语言服务与 LSP要理解这项变更先要回到 TypeScript 7.0。据本仓库新闻栏目记载TypeScript 7.0 已发布TypeScript 7 是首个基于 Go 编写的原生编译器与语言服务的稳定版本并且把语言服务迁移到了Language Server ProtocolLSP之上——支持 LSP 的编辑器可以共享同一个原生底座获得更快的项目加载、诊断、补全与导航能力。工作区符号搜索正是 LSP 提供的一项经典导航能力客户端编辑器向服务端发送workspace/symbol请求按名称在工作区范围内查找类、函数、变量等符号。当 VS Code 中同时打开多个 TypeScript/JavaScript 项目时该请求默认会跨越所有已打开项目检索这是旧行为也是本次变更想要提供收敛选项的原因。核心变更workspaceSymbols.scope偏好设置Microsoft 已将工作区符号搜索范围合入 TypeScript 原生语言服务。新增的语言服务偏好preferenceworkspaceSymbols.scope有两个取值取值含义是否默认allOpenProjects在所有已打开的项目中搜索符号是默认currentProject仅搜索包含传入文档的项目否需显式开启关键语义在于第二行的传入文档语言服务需要知道当前上下文是哪个文件才能据此判断当前项目到底是哪一个。这正是原生 VS Code 扩展配合改动的地方。VS Code 原生扩展如何配合向workspace/symbol请求注入文档原文明确指出原生 VS Code 扩展现在会在每次workspace/symbol请求中附加一个受支持的 TypeScript 或 JavaScript 文档优先使用当前活动active文档——即光标所在、正在编辑的.ts/.js文件若没有活动文档则回退到某个已打开的受支持文档。语言服务只有在workspaceSymbols.scope为currentProject时才使用这个附加文档来限定搜索范围否则继续执行跨所有已打开项目的旧式搜索。换句话说客户端侧VS Code 扩展总是携带文档上下文成本很低是纯附加信息服务端侧原生语言服务是否利用该上下文完全由workspaceSymbols.scope决定。这种客户端无条件上报、服务端按偏好消费的设计让旧行为在默认状态下保持不变也避免了为每个客户端单独做兼容分支。为什么重要多项目工作区中的同名符号歧义在真实开发中一个 VS Code 工作区往往同时挂着多个项目例如 monorepo 中的多个子包、或同时打开的前后端仓库。这些项目里经常出现相似命名的符号比如多个包都导出createClient、config、useStore之类的通用名称。默认的allOpenProjects会把所有项目中的同名符号混在一个结果列表里开发者必须靠路径前缀手工分辨该进哪个文件。而切到currentProject后结果集被收敛到包含当前编辑文件的那个项目同名符号的歧义大幅减少跳转命中率更高、心智负担更低。由于默认值保留了既有行为这一改进需要显式开启才生效——对不想改变习惯的用户零侵入。实操如何在多项目工作区启用与验证workspaceSymbols.scope是语言服务的偏好设置通过编辑器的设置机制下发VS Code 中对应偏好/设置层具体设置键名以你所安装的 TypeScript 7 原生 VS Code 扩展提供的设置说明为准但语义与取值如下将workspaceSymbols.scope设置为currentProject并确保使用 TypeScript 7 及之后的原生语言服务/原生 VS Code 扩展打开至少两个包含同名符号的 TypeScript 或 JavaScript 项目在一个项目的文件中触发工作区符号搜索按符号名全局查找对应 LSP 的workspace/symbol对比切换前后allOpenProjects→currentProject的结果集切换后结果应仅来自包含当前编辑文档的项目。判断依据currentProject限定的是包含传入文档的项目因此验证时务必让活动文档位于你希望限定搜索的那个项目中——扩展会优先采用活动文档作为上下文。可用性与注意事项合并时机该变更在 TypeScript 7.0 之后才合入原生代码库因此并非 7.0 自带的能力版本确认官方来源未指明包含该设置的具体稳定 npm 版本在依赖该设置之前请先查看你已安装 TypeScript 版本的发布说明release notes确认其是否包含此特性不影响默认用户未显式配置时allOpenProjects行为与以往完全一致。相关阅读本主题英文原文typescript-7-workspace-symbol-search-scope.md本主题捷克语版本cs-cz 版原文新闻列表索引TypeScript News 索引英文 与 捷克语版索引同一批次的原生语言服务改进TypeScript 7 改进 Go to Implementation 内存占用、TypeScript 7 在文件变更后刷新配置诊断背景铺垫TypeScript 7.0 发布公告赞分享文档教程【免费下载链接】typescript-bookThe Concise TypeScript Book: A Concise Guide to Effective Development in TypeScript. Free and Open Source.项目地址https://gitcode.com/gh_mirrors/typ/typescript-book点击查看免费下载相关推荐TypeScript 7 工作区符号搜索范围用 workspaceSymbols.scope 将符号搜索限定在当前项目TypeScript 7 工作区符号搜索范围用 workspaceSymbols.scope 将符号搜索限定在当前项目 导读 TypeScript 7 的原生文档教程TypeScript 7 工作区符号搜索范围详解用 workspaceSymbols.scope 将符号搜索限定到当前项目TypeScript 7 工作区符号搜索范围详解用 workspaceSymbols.scope 将符号搜索限定到当前项目 本文基于 typescript 7文档教程TypeScript 7 工作区符号搜索范围详解用 workspaceSymbols.scope 限定当前项目TypeScript 7 工作区符号搜索范围详解用 workspaceSymbols.scope 限定当前项目 本指南基于 The Concise TypeS文档教程上一篇3分钟上手Magic UI为设计工程师量身打造的开源动画组件库下一篇CS Demo Manager完整指南从游戏录像到战术洞察的终极分析工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →