Cheat Sheets - TypeScript

TypeScript Patterns

Primitive Types
let str: string = 'hello'
let num: number = 42
let bool: boolean = true
let arr: string[] = ['a', 'b']
let tuple: [string, number] = ['test', 123]
Union Types
type Status = 'idle' | 'loading' | 'success'
type StringOrNumber = string | number
type 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 : T
type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never
type 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>