Docs
/
TypeScript
Chapter 17

03 — TypeScript Advanced

Advanced Types

type StringOrNumber = string | number;
type Maybe<T> = T | null;
type Nullable<T> = T | undefined | null;

type Status = 'loading' | 'success' | 'error';

interface User {
  id: number;
  name: string;
  email?: string;
}

type PartialUser = Partial<User>;

Generics

function identity<T>(arg: T): T {
  return arg;
}

interface Lengthy {
  length: number;
}

function logLength<T extends Lengthy>(item: T): T {
  console.log(item.length);
  return item;
}

Utility Types

interface User {
  id: number;
  name: string;
  email: string;
}

type UserPreview = Pick<User, 'id' | 'name'>;
type UserPartial = Partial<User>;
type UserRequired = Required<User>;

Key Takeaways

  • Use generics for reusable components
  • Utility types for common transformations
  • Interfaces for object shapes
  • Type guards for runtime checking