Sofiane Boumedine Lexique Dev

Branded Types

TypeScript 🔴 Senior

Type : Pattern

Definition

Un branded type est un type nominal cree en ajoutant une propriete fantome (brand) a un type structurel. Deux branded types avec la meme structure de base sont incompatibles entre eux.

Analogie

Deux bouteilles d'eau identiques mais avec des etiquettes differentes : le contenu est le meme, mais on ne les confond pas.

Exemple de code

type USD = number & { readonly __brand: class="str">'USD' };
type EUR = number & { readonly __brand: class="str">'EUR' };
function toUSD(amount: number): USD { return amount as USD; }
function charge(amount: USD) { class="cmt">/* ... */ }
class="cmt">// charge(42);         // Error!
class="cmt">// charge(toUSD(42));  // OK

Cas d'usage

Empecher de melanger des IDs, des devises ou des unites de mesure qui sont toutes des string/number.

coreinterview-questionpattern