Advanced TypeScript Patterns

Here are some TypeScript patterns I’ve found particularly useful:

Type Predicates

Type predicates are functions that narrow down types:

function isError(value: unknown): value is Error {
  return value instanceof Error;
}

Discriminated Unions

Perfect for handling different states:

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