Back to Skills

using-typescript-types

verified

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", "运行时验证", "类型".

View on GitHub

Marketplace

LomoMarketplace

15195999826/LomoMarketplace

Plugin

typescript-style

productivity

Repository

15195999826/LomoMarketplace

plugins/typescript-style/skills/typescript-types/SKILL.md

Last Verified

January 21, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/15195999826/LomoMarketplace/blob/main/plugins/typescript-style/skills/typescript-types/SKILL.md -a claude-code --skill using-typescript-types

Installation paths:

Claude
.claude/skills/using-typescript-types/
Powered by add-skill CLI

Instructions

# TypeScript 类型规范

## 核心约定

| 规范 | 项目选择 |
|------|----------|
| 默认类型定义 | `type`(不用 `interface`) |
| 未知类型 | `unknown`(禁止 `any`) |
| 字符串常量 | 联合类型(不用 `enum`) |
| 外部数据 | Zod 验证(不用 `as Type`) |

## Type vs Interface

```
默认用 type
│
├─ 需要声明合并(扩展第三方库)→ interface
├─ 类的契约(implements)→ interface
└─ 其他情况 → type
```

## 禁止 any

```typescript
// ✗ 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
}
```

## 运行时验证 (Zod)

**外部数据必须验证**(API、表单、环境变量、配置文件):

```typescript
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`

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
925 chars

Issues Found:

  • name_directory_mismatch