该技能用于把测试代码里的 as 类型断言迁移为 @total-typescript/shoehorn 提供的类型安全写法,仅适用于测试代码,资料明确要求永远不要在 production code 中使用 shoehorn。
用途:替换测试中的 as,在保持 TypeScript 类型检查通过的前提下传入 partial data 或故意错误的数据。as 的问题在于:需要手动指定目标类型,且对故意错误的数据需用 as unknown as Type 双重断言。
安装:npm i @total-typescript/shoehorn
迁移模式:只关心少数属性的大型对象,可用 fromPartial() 只提供关心的字段,例如 getUser(fromPartial({ body: { id: "123" } })),替代原先手动伪造全部属性的写法。as Type 替换为 fromPartial();as unknown as Type 替换为 fromAny(),用于传入故意错误的数据并保留 autocomplete;fromExact() 用于强制完整对象,之后可换成 fromPartial。
工作流:先确认哪些测试文件的 as 断言造成问题、是否只关心大对象的部分属性、是否需要故意错误数据测试错误路径;然后安装,查找 as 断言(grep -r " as [A-Z]" --include=".test.ts" --include=".spec.ts"),用 fromPartial() 替换 as Type,用 fromAny() 替换 as unknown as Type,添加来自 @total-typescript/shoehorn 的导入,最后运行类型检查验证。
限制:仅用于测试代码;具体版本要求、兼容的 TypeScript 版本等资料未提供。