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 };