SuperAPI AI 工具集

typescript-effective

编程与开发

查看项目

更新于 10-16 05:36

技能介绍

用途

本技能用于编写生产级 TypeScript 代码。它提供可复用的判断标准、领域约束和经过验证的工作流,而非临时性建议。适用场景包括:对 TypeScript PR 进行代码评审;启动新的 TypeScript 项目(tsconfig、lint、测试设置);将 JavaScript 代码库逐步迁移到 TypeScript;消除现有 TS 代码库中的 any 漂移;为大型 monorepo 调优 TypeScript 构建。

当任务与 typescript-effective 无关,或更适合由更具体的配套技能处理时,不应使用本技能;当请求只需要一个简单答案、本技能的约束或参考文件没有实质帮助时,也不应使用。

主要能力

技能围绕以下核心内容展开:

  • 不可妥协项:strict: true 加上 noUncheckedIndexedAccess、exactOptionalPropertyTypes、noImplicitOverride;禁止使用 any,边界处使用 unknown 并收窄;除非没有更好选择否则不使用 as 断言,禁止 as unknown as T;所有外部输入(API 响应、环境变量、表单数据、队列负载)用 Zod 校验;优先使用联合类型而非 enum;使用可辨识联合配合穷尽 switch 和 assertNever;不抛出字符串,抛出 Error 子类;有意地用 null/undefined 建模缺失;输入默认 readonly;边界处的预期失败优先使用 Result/Either。

  • 生产环境 tsconfig:给出包含 target、module、moduleResolution、strict、noUncheckedIndexedAccess、exactOptionalPropertyTypes、noImplicitOverride、noFallthroughCasesInSwitch、noImplicitReturns、allowUnreachableCode、allowUnusedLabels、isolatedModules、verbatimModuleSyntax、skipLibCheck、resolveJsonModule、esModuleInterop、forceConsistentCasingInFileNames、useUnknownInCatchVariables 等选项的配置示例。

  • 核心 Effective TS 条目:优先使用能收窄值的类型(如 branded types 替代原始类型偏执);可辨识联合与穷尽匹配;使用前先收窄 unknown。

  • TS 中的 clean code:小函数、名称承载意图、注释解释 WHY、SOLID、不可变性、尽可能使用纯函数。

  • 错误处理:模块内部抛出异常可以接受,但在边界(API 处理器、worker、UI 事件处理器)返回类型化结果,给出 Ok/Err/Result 类型定义与示例,并提及 neverthrow、ts-results 或手写实现,每个项目选一种。

  • Zod 边界:每个外部输入用 Zod 解析,每个内部类型从 schema 推断,schema 作为唯一事实来源。

  • JS 到 TS 迁移:渐进式而非一次性,包括 allowJs/checkJs、添加 JSDoc 类型、逐文件重命名、逐步开启 noImplicitAny 与 strict 及更严格标志、单个 PR 的转换量控制。

  • 构建性能:monorepo 使用项目引用、isolatedModules、开发时 transpile-only、CI 中类型检查与打包分离、skipLibCheck。

  • 测试:vitest、用 expectTypeOf 或 tsd 做类型测试、用 fast-check 做属性测试、通过 schema 强类型化 fixtures。

  • 反模式:any、as T、as unknown as T、! 非空断言、Function 类型、Object/{} 类型、小字符串集合用 enum、全静态方法类、namespace、静默 catch、修改函数参数、对类型化对象使用 delete 等。

  • CI 门禁:tsc --noEmit、eslint . --max-warnings=0、vitest run --coverage --coverage.thresholds.lines=80。

使用方式

先阅读 SKILL.md,然后仅加载任务所需的深层参考文件。按技能中给出的有序指导、检查清单和决策规则执行,而不是挑选孤立片段。产出交付物时,在重要处明确假设、风险和后续工作。输出应面向执行、简洁,并与仓库基线工程标准一致;除非技能明确要求更严格的标准,否则保持与现有项目约定兼容;优先选择确定性、可评审的步骤。

所需输入:收集相关项目上下文、约束和要解决的具体问题;按需加载参考文件;确认期望的交付物(设计、代码、评审、迁移计划、审计或文档)。

参考文件包括:references/tsconfig-production.md、references/effective-ts-items.md、references/clean-code-ts.md、references/error-handling-result.md、references/zod-boundaries.md、references/migration-js-to-ts.md、references/build-performance.md、references/testing-vitest.md、references/anti-patterns.md。此外还提及 references/typescript-mastery.md(类型系统深度)和 references/typescript-design-patterns.md(GoF 模式)。

适用场景

TypeScript 代码评审、新项目搭建、JS 迁移、消除 any、大型 monorepo 构建调优、边界输入校验、错误处理设计、测试设置等。

限制

技能文档中未提供具体的收费、价格、平台支持范围等信息。部分内容(如具体库版本、完整参考文件内容)在给定资料中未展开,需查阅对应参考文件。