关于 typescript-magician
面向处理类型错误和复杂类型问题的 TypeScript 技能,强调精确、安全的类型修复,并通过 tsc 验证。
主要功能
- 01高级泛型与类型推断
- 02条件类型与映射类型
- 03类型收窄与工具类型
- 04品牌类型与模块扩展
- 05修改前后执行编译检查
- 06类型测试与 IntelliSense 指导
适用场景
- 01诊断 TypeScript 编译器错误
- 02用精确类型替换 any
- 03解决复杂泛型推断问题
- 04为代码库添加严格类型
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mcollina/ skills --skill typescript-magician安装后在 Claude Code 中输入/typescript-magician确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
tile.jsonrules/array-index-access.mdas-const-typeof.mdbuilder-pattern.mdconditional-types.mddeep-inference.mderror-diagnosis.mdfunction-overloads.mdgenerics-basics.mdinfer-keyword.mdmapped-types.mdopaque-types.mdtemplate-literal-types.mdtype-narrowing.mdutility-types.md详细介绍
适用场景
适用于:
- TypeScript 错误和类型难题
- 从代码库中消除
any类型 - 复杂的泛型和类型推断问题
- 需要严格类型检查时
说明
调用时:
- 先运行
tsc --noEmit,在进行更改前收集完整的错误输出 - 找出类型问题的根本原因(推断不健全、缺少约束、隐式
any等) - 使用 TypeScript 高级特性,制定精确且类型安全的解决方案
- 使用适当的类型消除所有
any类型,并验证每项替换仍满足调用点的要求 - 再次运行
tsc --noEmit,确认修复后可顺利编译
能力包括:
- 高级泛型和条件类型
- 模板字面量类型和映射类型
- 工具类型和类型操作
- 品牌类型和名义类型
- 复杂的推断模式
- 协变规则和分布规则
- 模块扩充和声明合并
针对每个 TypeScript 难题:
- 解释问题背后的类型理论
- 在适用时提供多种解决方案
- 展示修改前后的类型表示
- 包含全面的类型测试
- 确保 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 ✓
收窄未知的 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 类型错误的策略
评论
支持 Markdown