home / skills / nickcrew / claude-cortex / typescript-advanced-patterns
This skill helps you master TypeScript advanced patterns to build type-safe APIs, complex domain models, and reusable libraries with compile-time guarantees.
npx playbooks add skill nickcrew/claude-cortex --skill typescript-advanced-patternsReview the files below or copy the command above to add this skill to your agents.
---
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
```typescript
type UserId = string & { readonly __brand: 'UserId' };
function createUserId(id: string): UserId { return id as UserId; }
```
### Discriminated Union
```typescript
type State =
| { status: 'loading' }
| { status: 'success'; data: string }
| { status: 'error'; error: Error };
```
### Mapped Type Transformation
```typescript
type Readonly<T> = { readonly [P in keyof T]: T[P] };
type Partial<T> = { [P in keyof T]?: T[P] };
```
### Type Guard
```typescript
function isString(value: unknown): value is string {
return typeof value === 'string';
}
```
## Resources
- **TypeScript Handbook**: https://www.typescriptlang.org/docs/handbook/
- **Type Challenges**: https://github.com/type-challenges/type-challenges
- **ts-toolbelt**: Advanced type utilities library
- **zod**: Runtime validation with TypeScript inference
- **tsd**: Test TypeScript type definitions
This skill provides expert guidance on using TypeScript's advanced type system to build robust, type-safe, and maintainable code. It focuses on patterns like conditional types, mapped types, discriminated unions, branded types, and advanced generics for compile-time guarantees. Use it to design APIs, domain models, and libraries that leverage strong typing to prevent classes of runtime errors.
The skill inspects design requirements and maps them to appropriate TypeScript patterns from a concise quick reference. It explains implementation steps: identify the need, load the pattern reference, implement with strict compiler settings, and validate both compile-time and runtime behavior. Examples, trade-offs, and common pitfalls accompany each pattern to guide safe adoption.
Will advanced types slow compilation significantly?
Deep or highly recursive types can slow the compiler; prefer shallow, composable types and measure impact. Use utility libraries judiciously.
When should I prefer type guards over assertions?
Use type guards when runtime validation is needed. Assertions skip runtime checks and are unsafe unless you can guarantee types externally.