
typescript-magician
热门设计复杂的泛型类型、将 `any` 类型重构为严格的替代类型、创建类型守卫(type guard)与工具类型,并排查修复 TypeScript 编译器报错。当用户询问 TypeScript (TS) 类型、泛型、类型推导、类型守卫、消除 `any` 类型、严格类型检查、类型报错、`infer`、`extends`、条件类型、映射类型、模板字符串类型、品牌类型/不透明类型(branded/opaque types),或 `Partial`、`Record`、`ReturnType`、`Awaited` 等工具类型时使用。
1894Star
150Fork
更新于 2026/8/3
SKILL.md
只读
名称
typescript-magician
描述
设计复杂的泛型类型、将 `any` 类型重构为严格的替代类型、创建类型守卫(type guard)与工具类型,并排查修复 TypeScript 编译器报错。当用户询问 TypeScript (TS) 类型、泛型、类型推导、类型守卫、消除 `any` 类型、严格类型检查、类型报错、`infer`、`extends`、条件类型、映射类型、模板字符串类型、品牌类型/不透明类型(branded/opaque types),或 `Partial`、`Record`、`ReturnType`、`Awaited` 等工具类型时使用。
适用场景
以下场景适用此 Skill:
- 排查 TypeScript 报错与解决类型难题
- 从代码库中清理并消除
any类型 - 处理复杂的泛型设计与类型推导问题
- 需要实现严格类型安全的场景
执行指南
被调用时:
- 修改代码前,先运行
tsc --noEmit获取完整的类型报错日志 - 定位类型问题的根因(如推导不严密、缺少类型约束、隐式
any等) - 运用高级 TypeScript 特性,编写精准且类型安全的解决方案
- 用准确的类型彻底消除所有
any——验证每次替换仍能满足所有调用方的契约 - 再次运行
tsc --noEmit,确认修复后的代码零报错通过编译
能力覆盖范围:
- 高级泛型与条件类型
- 模板字符串类型与映射类型
- 工具类型与类型体操/类型操作
- 品牌类型(Brand Types)与名义类型系统(Nominal Typing)
- 复杂类型推导模式
- 型变(Variance)与分布式条件类型规则
- 模块补充(Module Augmentation)与声明合并
针对每个 TypeScript 类型难题:
- 解释问题背后的类型理论基础
- 适用时提供多种解决方案与思路
- 展示优化前后的类型对比
- 附带完整的类型测试代码
- 确保完美的 IDE 智能提示(IntelliSense)支持
快速示例
用泛型替代 any
优化前
function getProperty(obj: any, key: string): any {
return obj[key];
}
优化后
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
// getProperty({ name: "Alice" }, "name") → inferred as string ✓
收窄 unknown 类型的 API 响应
优化前
async function fetchUser(): Promise<any> {
const res = await fetch("/api/user");
return res.json();
}
优化后
interface User { id: number; name: string }
function isUser(value: unknown): value is User {
return (
typeof value === "object" &&
value !== null &&
"id" in value &&
"name" in value
);
}
async function fetchUser(): Promise<User> {
const res = await fetch("/api/user");
const data: unknown = await res.json();
if (!isUser(data)) throw new Error("Invalid user shape");
return data;
}
参考文档
查阅各规则文件以获取详细说明与代码示例:
核心模式
- rules/as-const-typeof.md - 使用
as const与typeof从运行时值推导类型 - rules/array-index-access.md - 使用
[number]索引访问数组元素类型 - rules/utility-types.md - 内置工具类型:Parameters、ReturnType、Awaited、Omit、Partial、Record
高级泛型
- rules/generics-basics.md - 泛型基础、类型约束与类型推导
- rules/builder-pattern.md - 支持链式调用的类型安全构建器模式
- rules/deep-inference.md - 利用 F.Narrow 与 const 泛型参数实现深层类型推导
类型级编程
- rules/conditional-types.md - 用于类型层级 if/else 逻辑的条件类型
- rules/infer-keyword.md - 在条件类型中使用
infer提取类型 - rules/template-literal-types.md - 类型层面的字符串操作
- rules/mapped-types.md - 通过转换已有类型属性创建新类型
类型安全模式
- rules/opaque-types.md - 用于类型安全标识符的品牌类型与不透明类型
- rules/type-narrowing.md - 通过控制流分析收窄类型
- rules/function-overloads.md - 使用函数重载处理复杂的函数签名
排错与调试
- rules/error-diagnosis.md - TypeScript 类型报错的诊断与理解策略





