Cheat Sheets - TypeScript
TypeScript Patterns
Primitive Types
let str: string = 'hello'let num: number = 42let bool: boolean = truelet arr: string[] = ['a', 'b']let tuple: [string, number] = ['test', 123]
Union Types
type Status = 'idle' | 'loading' | 'success'type StringOrNumber = string | numbertype Theme = 'light' | 'dark' | 'auto'
Enums
enum Color {Red = '#ff0000',Green = '#00ff00',Blue = '#0000ff'}const primary = Color.Red
Generic Constraints
function pick<T, K extends keyof T>(obj: T, key: K): T[K]interface Lengthwise { length: number }function log<T extends Lengthwise>(arg: T): T
Conditional Types
type NonNullable<T> = T extends null | undefined ? never : Ttype ReturnType<T> = T extends (...args: any[]) => infer R ? R : nevertype Flatten<T> = T extends (infer U)[] ? U : T
Mapped Types
type Partial<T> = { [P in keyof T]?: T[P] }type Required<T> = { [P in keyof T]-?: T[P] }type Readonly<T> = { readonly [P in keyof T]: T[P] }
Template Literal Types
type EventName<T> = `on${Capitalize<T>}`type Theme = 'dark' | 'light'type ThemedColor = `${Theme}-${string}`type CSSProps = `--${string}`
Utility Types
type User = { id: number; name: string; email: string }type CreateUser = Omit<User, 'id'>type UserEmail = Pick<User, 'email'>type OptionalUser = Partial<User>