Accueil » Bonnes pratiques & Clean code » TypeScript : 3 patterns pour sécuriser votre code

Les types discriminants sont particulièrement utiles lorsque vous manipulez des objets pouvant représenter plusieurs états. En ajoutant une propriété commune — souvent appelée kind ou type — vous permettez à TypeScript d’inférer automatiquement la forme exacte de l’objet.
type Response = | { kind: 'success'; data: string } | { kind: 'error'; message: string };Grâce à ce pattern, un simple switch garantit que chaque cas est traité correctement. TypeScript vous alerte immédiatement si un état n’est pas couvert, ce qui réduit les erreurs silencieuses.
Ce pattern est idéal pour les API internes, les gestionnaires d’événements ou les flux complexes. Il clarifie les intentions et rend le code plus prévisible.
Les types utilitaires comme Partial, Readonly, Pick ou Record permettent de manipuler des objets de manière sûre et expressive. Par exemple, Readonly empêche toute modification accidentelle d’un objet :
type Config = { url: string; timeout: number; }; const cfg: Readonly<Config> = { url: 'https://api.com', timeout: 3000 };En utilisant ces utilitaires, vous imposez des règles claires : certains objets ne doivent jamais être modifiés, d’autres doivent être partiels, ou encore dérivés d’un modèle existant. Cela réduit les comportements imprévus et améliore la stabilité globale.
Ces types sont particulièrement utiles dans les architectures modulaires ou les projets à grande échelle.
Le pattern Option/Maybe consiste à encapsuler une valeur potentiellement absente dans une structure contrôlée. Au lieu de retourner null ou undefined, vous renvoyez un objet Some ou None.
type Option<T> = | { kind: 'some'; value: T } | { kind: 'none' }; function findUser(id: string): Option<User> { return users[id] ? { kind: 'some', value: users[id] } : { kind: 'none' }; }Ce pattern oblige le développeur à traiter explicitement les deux cas. Résultat : moins d’erreurs inattendues, un code plus clair et une intention parfaitement exprimée. Il s’intègre très bien avec les types discriminants pour une sécurité maximale.
Adopter ce pattern, c’est dire adieu aux erreurs du type “Cannot read property of undefined”.

Au‑delà du code : StackAndLife, ton allié pour progresser et t’équiper.

