AGENT SKILL
TypeScript Language Patterns
Modern TypeScript standards for type safety and maintainability. Use when working with types, interfaces, generics, enums, unions, or tsconfig settings.
- License 许可
- MIT
- 最近更新
- 2026-06-24
- Stars
- ★ 66
- Forks
- 24
01 前言 Front Matter
- name
- TypeScript Language Patterns
- metadata
- { "labels": [ "typescript", "language", "types", "generics" ], "triggers": { "files": [ "**/*.ts", "**/*.tsx", "tsconfig.json" ], "keywords": [ "type", "interface", "generic", "enum", "union", "intersection", "readonly", "const", "namespace" ] } }
- description
- Modern TypeScript standards for type safety and maintainability. Use when working with types, interfaces, generics, enums, unions, or tsconfig settings.
03 SKILL.md 正文
TypeScript Language Patterns
Priority: P0 (CRITICAL)
Implementation Guidelines
- Type Annotations: Explicit params/returns. Infer locals.
- Interfaces vs Types:
interfacefor APIs.typefor unions. - Strict Mode:
strict: true. Null Safety:?.and??. - Enums: Literal unions or
as const. No runtimeenum. - Generics: Reusable, type-safe code.
- Type Guards:
typeof,instanceof, predicates. - Utility Types:
Partial,Pick,Omit,Record. - Immutability:
readonlyarrays/objects. Const Assertions:as const,satisfies. - Template Literals:
on${Capitalize<string>}. - Discriminated Unions: Literal
kindproperty. - Advanced: Mapped, Conditional, Indexed types.
- Access: Default
public. Useprivate/protectedor#private. - Branded Types:
string & { __brand: 'Id' }.
Anti-Patterns
- No
any: NEVER useany. Useunknownor specific interfaces. - No
Function: Use signature() => void. - No
enum: Runtime cost. - No
!: Use narrowing. - NO LINT DISABLE: PROHIBITED. Fix issues properly.
Testing
- Mocking: Use
jest.Mocked<T>oras unknown as T. - Checklist: Check method existence, match error constants, satisfy required properties.
- References: See references/TESTING.md for common issues/solutions.
Code
// Branded Type
type UserId = string & { __brand: 'Id' };
// Satisfies (Validate + Infer)
const cfg = { port: 3000 } satisfies Record<string, number>;
// Discriminated Union
type Result<T> = { kind: 'ok'; data: T } | { kind: 'err'; error: Error };
Reference & Examples
For advanced type patterns and utility types: See references/REFERENCE.md.
Related Topics
best-practices | security | tooling