typescript-advanced-patterns

typescript-advanced-patterns

Advanced TypeScript patterns for type-safe, maintainable code using sophisticated type system features. Use when building type-safe APIs, implementing complex domain models, or leveraging TypeScript's advanced type capabilities.

7звезд
2форков
Обновлено 1/17/2026
SKILL.md
readonlyread-only
name
typescript-advanced-patterns
description

Advanced TypeScript patterns for type-safe, maintainable code using sophisticated type system features. Use when building type-safe APIs, implementing complex domain models, or leveraging TypeScript's advanced type capabilities.

TypeScript Advanced Patterns

Expert guidance for leveraging TypeScript's advanced type system features to build robust, type-safe applications with sophisticated type inference, compile-time guarantees, and maintainable domain models.

When to Use This Skill

  • Building type-safe APIs with strict contracts and validation
  • Implementing complex domain models with compile-time enforcement
  • Creating reusable libraries with sophisticated type inference
  • Enforcing business rules through the type system
  • Building type-safe state machines and builders
  • Developing framework integrations requiring advanced types
  • Implementing runtime validation with type-level guarantees

Core Concepts

TypeScript's type system enables compile-time safety through:

  1. Conditional Types: Type selection based on conditions (type-level if/else)
  2. Mapped Types: Transform object types systematically (Partial, Readonly, Pick, Omit)
  3. Template Literal Types: String manipulation at compile time
  4. Type Guards: Runtime checking with type narrowing (value is Type)
  5. Discriminated Unions: Type-safe state machines with exhaustiveness checking
  6. Branded Types: Nominal types for preventing primitive mixing
  7. Builder Pattern: Type-safe fluent APIs with progressive type constraints
  8. Advanced Generics: Constraints, inference, and higher-kinded type patterns
  9. Utility Types: Deep transformations and compositions
  10. Type Inference: Const assertions and contextual typing

Quick Reference

Load detailed references on-demand:

Topic Reference File
Conditional Types skills/typescript-advanced-patterns/references/conditional-types.md
Mapped Types skills/typescript-advanced-patterns/references/mapped-types.md
Template Literal Types skills/typescript-advanced-patterns/references/template-literal-types.md
Type Guards skills/typescript-advanced-patterns/references/type-guards.md
Discriminated Unions skills/typescript-advanced-patterns/references/discriminated-unions.md
Branded Types skills/typescript-advanced-patterns/references/branded-types.md
Builder Pattern skills/typescript-advanced-patterns/references/builder-pattern.md
Advanced Generics skills/typescript-advanced-patterns/references/advanced-generics.md
Utility Types skills/typescript-advanced-patterns/references/utility-types.md
Type Inference skills/typescript-advanced-patterns/references/type-inference.md
Decorators skills/typescript-advanced-patterns/references/decorators.md
Performance Best Practices skills/typescript-advanced-patterns/references/performance-best-practices.md
Common Pitfalls skills/typescript-advanced-patterns/references/common-pitfalls.md
Testing Types skills/typescript-advanced-patterns/references/testing-types.md

Implementation Workflow

1. Identify Pattern Need

  • Analyze type safety requirements
  • Identify runtime vs compile-time constraints
  • Choose appropriate pattern from Quick Reference

2. Load Reference

  • Read specific reference file for pattern
  • Review examples and use cases
  • Understand trade-offs

3. Implement Pattern

  • Start simple, add complexity as needed
  • Use strict mode (tsconfig.json with "strict": true)
  • Test with type assertions

4. Validate

  • Ensure type errors caught at compile time
  • Verify runtime behavior matches types
  • Check performance (avoid excessive type complexity)

5. Document

  • Add JSDoc comments for public APIs
  • Document type constraints and assumptions
  • Provide usage examples

Common Mistakes to Avoid

  1. Using any instead of unknown: Loses all type safety

    • Use unknown and type guards instead
  2. Type assertions without validation: Unsafe runtime behavior

    • Prefer type guards (value is Type) over as Type
  3. Overusing generics: Unnecessary complexity

    • Only use generics when types truly vary
  4. Deep type nesting: Slow compilation, hard to debug

    • Keep types composable and shallow
  5. Forgetting readonly: Accidental mutations

    • Mark immutable data structures as readonly
  6. Not enabling strict mode: Missing null checks and type errors

    • Always use "strict": true in tsconfig.json
  7. Mixing type and interface incorrectly: Confusing semantics

    • Use type for unions/utilities, interface for object shapes

Quick Patterns

Type-Safe ID

type UserId = string & { readonly __brand: 'UserId' };
function createUserId(id: string): UserId { return id as UserId; }

Discriminated Union

type State =
  | { status: 'loading' }
  | { status: 'success'; data: string }
  | { status: 'error'; error: Error };

Mapped Type Transformation

type Readonly<T> = { readonly [P in keyof T]: T[P] };
type Partial<T> = { [P in keyof T]?: T[P] };

Type Guard

function isString(value: unknown): value is string {
  return typeof value === 'string';
}

Resources

You Might Also Like

Related Skills

coding-agent

coding-agent

179Kdev-codegen

Run Codex CLI, Claude Code, OpenCode, or Pi Coding Agent via background process for programmatic control.

add-uint-support

add-uint-support

97Kdev-codegen

Add unsigned integer (uint) type support to PyTorch operators by updating AT_DISPATCH macros. Use when adding support for uint16, uint32, uint64 types to operators, kernels, or when user mentions enabling unsigned types, barebones unsigned types, or uint support.

at-dispatch-v2

at-dispatch-v2

97Kdev-codegen

Convert PyTorch AT_DISPATCH macros to AT_DISPATCH_V2 format in ATen C++ code. Use when porting AT_DISPATCH_ALL_TYPES_AND*, AT_DISPATCH_FLOATING_TYPES*, or other dispatch macros to the new v2 API. For ATen kernel files, CUDA kernels, and native operator implementations.

skill-writer

skill-writer

97Kdev-codegen

Guide users through creating Agent Skills for Claude Code. Use when the user wants to create, write, author, or design a new Skill, or needs help with SKILL.md files, frontmatter, or skill structure.

Implements JavaScript classes in C++ using JavaScriptCore. Use when creating new JS classes with C++ bindings, prototypes, or constructors.

Creates JavaScript classes using Bun's Zig bindings generator (.classes.ts). Use when implementing new JS APIs in Zig with JSC integration.