From typescript-style
Guides TypeScript type usage: type vs interface decision, avoiding any, and Zod runtime validation. Use when defining types, choosing type patterns, or validating external data. Triggers: "type vs interface", "any", "unknown", "Zod", "运行时验证", "类型".
How this skill is triggered — by the user, by Claude, or both
Slash command
/typescript-style:typescript-typesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
| 规范 | 项目选择 |
| 规范 | 项目选择 |
|---|---|
| 默认类型定义 | type(不用 interface) |
| 未知类型 | unknown(禁止 any) |
| 字符串常量 | 联合类型(不用 enum) |
| 外部数据 | Zod 验证(不用 as Type) |
默认用 type
│
├─ 需要声明合并(扩展第三方库)→ interface
├─ 类的契约(implements)→ interface
└─ 其他情况 → type
// ✗ any
function process(data: any) { }
// ✓ unknown + 类型守卫
function process(data: unknown) {
if (typeof data === 'string') {
console.log(data.toUpperCase())
}
}
// 类型谓词
function isUser(v: unknown): v is User {
return typeof v === 'object' && v !== null && 'id' in v
}
外部数据必须验证(API、表单、环境变量、配置文件):
import { z } from 'zod'
const UserSchema = z.object({
id: z.string(),
name: z.string(),
email: z.string().email(),
})
type User = z.infer<typeof UserSchema>
// 验证 API 响应
const user = UserSchema.parse(await res.json())
详细 Zod 模式参见
references/zod-patterns.md
npx claudepluginhub 15195999826/lomomarketplace --plugin typescript-styleEnforces TypeScript conventions for strict, type-safe code: no `any` use unknown, interfaces vs types, literal unions over enums, discriminated unions, type narrowing with guards, branded types, and anti-pattern avoidance.
Guides TypeScript code with pedantic best practices: strict tsconfig flags like noUncheckedIndexedAccess, discriminated unions over assertions, Zod runtime validation, barrel exports, as const, ESLint rules.
Guides TypeScript type system usage: generics, utility types (Partial, Pick, Omit), type narrowing, guards, discriminated unions, strict mode, and patterns with zod/valibot.