Cette solution provient de la programmation fonctionnelle, et elle notamment utilisée en Kotlin, Rust, ou encore Swift. Le principe est simple : un objet Result contiendra le résultat d’une opération.
Soit une erreur en cas d’échec, soit un objet (ou une primitive) correspondant au résultat attendu.
Différentes librairies permettent d’utiliser ces objets en TypeScript. Par exemple : ts-results, neverthrow. On se basera sur neverthrow pour les explications à venir.
Voici la signature de l’objet Result. C’est ce que retournera désormais chaque fonction dont l’exécution est incertaine :