mcpField
T
typescript-patterns

typescript-patterns

github.com/oakoss开发20184 次安装10 周前更新
代码仓库

关于 typescript-patterns

面向使用严格模式的 TypeScript 开发者,汇总利用类型系统编写更安全代码的模式。内容涵盖 API、数据转换和库开发,不是入门教程。

主要功能

  1. 01工具类型与映射类型
  2. 02泛型约束与类型推断
  3. 03类型守卫与收窄
  4. 04判别联合与穷尽检查
  5. 05严格模式及现代类型惯用法

适用场景

  1. 01设计类型安全的 API
  2. 02用类型处理复杂数据转换
  3. 03开发 TypeScript 库

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/oakoss/agent-skills --skill typescript-patterns

安装后在 Claude Code 中输入/typescript-patterns确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
conditional-types.md
discriminated-unions.md
generics.md
mapped-types.md
modern-idioms.md
module-patterns.md
strict-mode.md
type-guards.md
type-utilities.md

详细介绍

TypeScript 模式

概述

利用类型系统防止运行时错误的高级 TypeScript 模式。重点介绍严格模式 TypeScript 中的类型推断、类型收窄和编译时验证模式。不适合初学者。

适用场景: 构建类型安全的 API、复杂数据转换、编写库、通过类型防止运行时错误、使用严格模式标志。

不适用场景: 学习 TypeScript 基础知识(原始类型、接口、类)、JavaScript 迁移到 TypeScript 的指南、工具配置或构建配置。

快速参考

模式API要点
工具类型Pick<T, K>, Omit<T, K>提取或排除属性
Partial/RequiredPartial<T>, Required<T>将属性设为可选或必需
Record 类型Record<K, V>键已知的对象
Awaited 类型Awaited<T>解包 Promise 返回类型
ReturnType/ParametersReturnType<F>, Parameters<F>提取函数类型
泛型约束<T extends Type>约束泛型参数
类型推断type Inferred = typeof value让 TypeScript 根据值进行推断
类型守卫typeof, instanceof, in在运行时收窄类型
自定义类型守卫(x): x is Type用户定义的类型收窄函数
推断的谓词(x) => x !== null自动推断类型谓词的过滤器
可辨识联合带有字面量 type 属性的联合穷尽式模式匹配
条件类型T extends U ? X : Y类型级条件表达式
映射类型{ [K in keyof T]: T[K] }转换所有属性
模板字面量`${A}-${B}`操作字符串字面量类型
const 断言as const尽可能收窄字面量类型
satisfies 运算符value satisfies Type执行类型检查,但不拓宽类型
NoInfer 工具类型NoInfer<T>阻止从某个位置进行推断
const 类型参数<const T extends Type>无需 as const 即可进行收窄推断
内联类型导入import { type User }显式导入类型
模块增强declare module 'lib' { ... }扩展第三方类型
断言函数function assert(x): asserts x is T类型守卫失败时抛出错误

常见错误

错误正确做法
无充分理由地使用 any使用 unknown,并通过类型守卫缩小类型范围
到处手动进行类型断言让类型推断发挥作用,并为函数返回值标注类型
类型缩小前进行解构保留对象完整,以便使用可辨识联合
未检查 undefined 就访问索引启用 noUncheckedIndexedAccess
使用 as Type 转换不安全的值使用 satisfies Type 保留更精确的类型
在泛型中内联对象提取为 const 或类型别名
在约束中省略 extends尽可能始终约束泛型
使用 Parameters<typeof fn>[0]直接在函数中为参数标注类型
未处理联合类型的穷尽性在 switch/if-else 中使用 never 检查
使用 value as const satisfies Type使用 satisfies Type,必要时再使用 as const

委派

  • 模式发现:使用 Explore Agent 查找代码库中的现有模式
  • 类型错误调试:使用 Task Agent 处理多步骤类型解析
  • 代码审查:委派给 code-reviewer 技能进行类型安全审查

参考资料

评论

支持 Markdown