เนื่องจาก TypeScript มี structural typing UserId และ OrderId ที่เป็น string จึงสามารถใช้แทนกันได้ — คอมไพเลอร์ไม่สามารถหยุดคุณจากการสับสนได้ Branded types จำลอง nominal typing โดยแนบ "brand" ที่ไม่ซ้ำใครและเป็น phantom เพื่อให้ประเภทที่เหมือนกันกลายเป็นแตกต่างกัน
