L’inférence en TypeScript, ces cas qui n’étaient pas géré

⏱ Temps de lecture : 6 mins

Inférence en TypeScript, ces cas qui n'étaient pas géré


L’inférence en TypeScript est une brique essentielle de ce langage (il gagne ses lettres de noblesse, on ne parle plus de pseudo-langage).


Voici un exemple simple :


Cette inférence est poussée très loin, par exemple :


Néanmoins, il y a des cas qui ne sont pas gérés et cela est un véritable handicap pour le développement.


Nous allons en voir deux en particulier.


Cas 1 d’inférence TypeScript non-gérée : filter


Un exemple valant mieux que 1000 mots, voici une implémentation simple de filter qui provoque une erreur :


TypeScript ne parvient pas à prédire le type issus de filter, pour palier on est obligé de contourner le problème, ou de tricher pour le résoudre :


Dans tous les cas, cela donne au code beaucoup moins de visibilité, surtout qu’il est difficile d’admettre que ce cas là ne soit pas géré.


Il y a néanmoins une bonne nouvelle. La version 5.5 de TypeScript gère l’inférence de .filter.


L’inférence TypeScript en try … catch


Il s’agit d’un point noir de TypeScript, l’absence d’inférence dans les clauses catch.


Voici un exemple :


Cela crée énormément de problème, il est impossible de typer le paramètre error dans le catch et donc de pouvoir l'utiliser correctement par la suite.


Pour éviter cela, les puristes vont vouloir supprimer la notion même de try … catch.


Cette fonction retourne soit un string, soit une erreur typée. Elle peut donc être traitée plus en avant dans le code.


L’utilisation de librairie, telle que LIEN effect permettent, via le pattern fonctionnel, de pouvoir traiter le problème de typage des erreurs :


Ici, on constate que le catch est wrappé dans un effect (un programme) et est fortement typé.


Pour l’instant, la mise à jour de la prise en charge du typage en TypeScript est uniquement dans une phase de proposition.


La programmation fonctionnelle, bien que très élégante, fait peur aux développeurs. Car elle oblige à revoir l'ensemble des paradigmes du développement.


J'espère que cet article vous aura apporté un peu plus de connaissance aujourd’hui.


En résumé

  • TypeScript possède une inférence puissante, mais certains cas spécifiques, comme l'utilisation de filter, ne sont pas correctement gérés.
  • Avant la version 5.5 de TypeScript, il était difficile de prédire le type de retour de la méthode filter, nécessitant des solutions de contournement.
  • Inférence en try...catch : TypeScript ne permet pas de typer directement le paramètre error dans les clauses catch, ce qui complique la gestion des erreurs.

Partager cet article

Qui sommes-nous ?

Mon Formateur Indépendant est un collectif d'experts du secteur du digital.


Nous proposons des formations professionnelles et des accompagnements sur-mesure sur le développement web, la cybersécurité, le SEO et le marketing digital.


Ecrit par : Thomas Dupont

photo de profil de Thomas Dupont


Avec une double casquette de développeur et de contrôleur financier, Thomas allie une expertise technique en développement web à de solides connaissances en gestion d'entreprise. Cette combinaison unique lui permet de comprendre et d'agir efficacement sur les problématiques de ses clients.
En tant que développeur web depuis 10 ans, Thomas maîtrise les technologies et langages web comme JavaScript, TypeScript et Node.js.
Il est intervenu pour des sociétés prestigieuses telles que L'Oréal, Louis Vuitton ou Chanel et travaille sur des applications comptabilisant des centaines de milliers d'utilisateurs actifs.
Il vous apportera une vraie vision orientée solutions.