Types de Résultat pour les Échecs Attendus en TypeScript_
Les exceptions ont toujours leur place, mais les échecs commerciaux attendus sont plus faciles à raisonner lorsqu'ils sont modélisés comme des données plutôt que cachés dans le flux de contrôle.
Maintenant, la signature de la fonction indique à l'appelant que l'échec est attendu et modélisé.
Ce que Vous Gagnez
Cette approche aide lorsque :
les modes d'échec font partie de la logique de domaine
l'appelant est censé réagir différemment à chacun
vous voulez que ces cas soient visibles dans le système de types
Le site d'appel devient explicite :
const result = await fetchUser("123");if (!result.ok) { if (result.error === "NOT_FOUND") return render404(); return renderRetryState();}return renderProfile(result.value);
C'est souvent plus facile à réviser qu'un try/catch qui mélange des erreurs de transport, des erreurs de parsing et des échecs de logique métier dans un seul bloc.
Ce que Vous Devriez Encore Lever
Les types de résultat ne sont pas une raison pour interdire les exceptions.
Lancez une exception lorsque :
le processus rencontre une véritable violation d'invariant
continuer l'exécution est dangereux
une limite de cadre attend des exceptions
Modélisez comme des données lorsque :
l'échec est attendu
l'appelant doit se ramifier en fonction de cela
cela fait partie du comportement normal du produit
Cette distinction est plus utile que "les exceptions sont mauvaises" en tant que règle générale.