SuperAPI AI 工具集

typescript-strict-mode

编程与开发

查看项目

更新于 10-16 02:39

技能介绍

用途:该技能提供跨框架通用的 TypeScript 严格类型实践指导,目标是写出更安全、更易维护的代码。核心规则是绝不使用 any,因为 any 会破坏类型系统、隐藏编译期可发现的缺陷、在代码库中传播类型不安全并使重构困难;许多代码库启用了 @typescript-eslint/no-explicit-any,使用 any 会导致构建失败。

主要能力:给出 any 的替代方案,包括使用具体类型、在类型真正未知时用 unknown 并通过类型守卫收窄、用泛型编写可复用组件、用联合类型表达有限可能、用 Record<K, V> 处理动态对象、用索引签名处理灵活对象。还涵盖常见事件处理类型(React 的 FormEvent、ChangeEvent、MouseEvent、KeyboardEvent、FocusEvent,以及非 React 的 DOM 事件类型)、Promise 与 async 函数类型、回调与函数重载、类型断言的使用时机与风险、内置工具类型(Partial、Required、Pick、Omit、Readonly、Record、ReturnType、Parameters)、可辨识联合、模块增强(如扩展 Express Request 与 NodeJS.ProcessEnv)。

使用方式:按文档中的正误对照示例替换 any 写法;对 JSON 数据先用 unknown 接收,再用类型守卫或 schema 校验(如 zod)验证;对空数组显式标注元素类型;对对象属性访问使用泛型约束 T extends Record<string, unknown> 与 K extends keyof T。建议启用 ESLint 规则:@typescript-eslint/no-explicit-any、no-unsafe-assignment、no-unsafe-member-access、no-unsafe-call、no-unsafe-return 设为 error,strict-boolean-expressions 设为 warn;并在 tsconfig.json 中设置 useUnknownInCatchVariables: true(TypeScript 4.4+),替代已废弃的 no-implicit-any-catch 规则。

适用场景与限制:适用于所有使用 TypeScript 的项目,尤其是启用严格检查或 ESLint 严格规则的代码库。类型断言会绕过类型检查,应尽量用类型守卫替代。资料未提供安装命令、版本要求、收费信息或具体平台支持范围。