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.

7stars
2forks
Updated 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.

openclaw avataropenclaw
Get
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.

pytorch avatarpytorch
Get
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.

pytorch avatarpytorch
Get
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.

pytorch avatarpytorch
Get

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

oven-sh avataroven-sh
Get

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

oven-sh avataroven-sh
Get