用途:将用户报告的 TypeSpec 编译器或 emitter 缺陷,缩减为仍能触发该问题的最小单个 .tsp 文件。
输入:TypeSpec 源码(粘贴代码或 GitHub URL),以及错误描述(诊断代码、消息或错误的 emitter 输出)。
环境:工作目录使用 packages/samples/scratch/,该目录已被 gitignore,且 packages/samples 包已依赖 compiler、http、rest、openapi3、versioning、json-schema 等。若复现需要工作区中没有的包(例如 @azure-tools/*),改用临时文件夹并执行 npm install。
步骤:
- 复现:把用户代码写入 packages/samples/scratch/main.tsp,用 npx tsp compile main.tsp 编译(相关时加 --emit <emitter>),确认出现相同错误。
- 最小化:迭代删除代码(未使用的 import、model、属性、decorator、operation、namespace),每次删除后重新编译,只保留触发同一错误所需内容;若删除后错误消失则撤销该删除。
- 呈现:展示最终的最小 .tsp、编译命令和错误输出,建议粘贴到 GitHub issue 或 TypeSpec Playground。
- 清理:执行 rm -f packages/samples/scratch/*.tsp packages/samples/scratch/tspconfig.yaml && rm -rf packages/samples/scratch/tsp-output。
提示:多数复现可缩减为单个文件且无需 namespace;尽早移除 @service、@server、@doc、@info,它们通常无关;通过内联把多文件代码合并为一个文件;若错误无法复现,检查是否缺少 import/using 语句。
限制:资料未提供该技能的收费、价格、平台支持范围或效果保证等信息。