用途:这是一份 TypeScript 编码规范技能,用于在开发者想用 any 类型、遇到难以修复的类型错误,或从 JavaScript 迁移到 TypeScript 时提供指导。核心主张是:any 会关闭所在代码的类型检查,从而失去类型安全、开发体验、重构信心和缺陷预防能力。
主要能力:给出“铁律”——没有具体且记录在案的理由,绝不使用 any;列出检测“any 味道”的方法;总结 any 的五类风险:无类型安全、破坏函数契约、失去语言服务(自动补全与重构)、掩盖重构缺陷、隐藏类型设计。还提供“抗压协议”,回应“太复杂”“以后再修”“库没有类型”等常见借口,并给出替代方案对照:未知值用 unknown,数组用 unknown[] 或具体类型,函数签名写完整,Record<string, any> 改为 Record<string, unknown>,JSON 用 unknown 解析并校验。
使用方式:在写 any 前停下来自问是否有更好方式;优先定义 interface 与类型别名;对不掌控的值用 unknown 并做类型收窄;为第三方库编写最小类型或 .d.ts;确实必须用 any 时,缩小作用域、写明原因并计划消除。文中还列出危险信号,如单个函数多个 any、用 as any 消错、@ts-ignore、公共 API 或返回值出现 any。
适用场景:类型报错排查、JavaScript 迁移、无类型第三方库、为既有代码补类型注解。
限制:资料未提供该技能的安装命令、运行方式、平台支持、收费信息或实际效果数据,这些暂未提供。内容基于《Effective TypeScript》第 5 条。