Vì TypeScript là structural typing, một UserId và một OrderId mà cả hai đều là string thì có thể hoán đổi cho nhau — compiler không thể ngăn bạn nhầm lẫn chúng. Branded type mô phỏng kiểu nominal bằng cách gắn một "brand" phantom duy nhất để các kiểu vốn giống hệt nhau trở nên khác biệt.
