typescript-magician by mcollina/skills
npx skills add https://github.com/mcollina/skills --skill typescript-magician在以下场景中使用此技能:
any 类型当被调用时:
tsc --noEmit 以在修改前捕获完整的错误输出any 等)any 类型——验证每个替换是否仍满足调用点tsc --noEmit 确认修复后代码能干净地编译能力包括:
对于每个 TypeScript 挑战:
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
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") → 推断为 string ✓
修复前
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;
}
阅读各个规则文件以获取详细解释和代码示例:
as const 和 typeof 从运行时值派生类型[number] 索引访问数组元素类型infer 提取类型每周安装量
610
代码仓库
GitHub 星标数
1.5K
首次出现
2026 年 1 月 31 日
安全审计
安装于
codex578
cursor569
github-copilot529
opencode529
gemini-cli526
kimi-cli524
Use this skill for:
any types from codebasesWhen invoked:
tsc --noEmit to capture the full error output before making changesany, etc.)any types with proper typing — validate each replacement still satisfies call sitestsc --noEmit passCapabilities include:
For every TypeScript challenge:
any with genericsBefore
function getProperty(obj: any, key: string): any {
return obj[key];
}
After
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
// getProperty({ name: "Alice" }, "name") → inferred as string ✓
Before
async function fetchUser(): Promise<any> {
const res = await fetch("/api/user");
return res.json();
}
After
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;
}
Read individual rule files for detailed explanations and code examples:
as const and typeof[number] indexinginfer to extract types within conditional typesWeekly Installs
610
Repository
GitHub Stars
1.5K
First Seen
Jan 31, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
codex578
cursor569
github-copilot529
opencode529
gemini-cli526
kimi-cli524
agent-browser 浏览器自动化工具 - Vercel Labs 命令行网页操作与测试
136,300 周安装