TypeScript は構造的に型付けされるため、どちらも string である UserId と OrderId は交換可能であり、コンパイラはそれらを取り違えるのを止められません。ブランド型は、一意で幻影的な「ブランド」を付与することでnominal型付けを模倣し、それ以外は同一の型を区別できるようにします。
ts
<T, B> = T & { : B };
= <, >;
= <, >;
() { id; }
uid = ;
oid = ;
(uid);
(oid);
();
