JavaScript est déjà un langage typé dynamiquement à la base, mais on ne peut pas considérer que JavaScript ait un typage fort ; les erreurs de types sont encore sources de nombreux bugs dans les applications JavaScript.
Il y a TypeScript de Microsoft ou Flow de Facebook qui sont apparus dans ce sens pour essayer d’éliminer ces erreurs, mais c’est du typage statique. Ces solutions ne permettent pas de valider les types des données à l’exécution, seulement à la compilation. De ma propre expérience, le typage statique est insuffisant pour prévenir la majorité des bugs issus d’erreurs de types. Cela vient du fait que dans le cadre d’applications JavaScript, nous reposons énormément sur des sources non prédictibles de données : saisies utilisateur, dépendances externes (CDN, npm, bower), web services et API externes… Le typage statique ne permet pas de contrôler la validité de ces données puisqu’elles arrivent à l’exécution.
C’est pour ça que je travaille depuis maintenant huit mois sur une bibliothèque JavaScript baptisée Object Model chargée d’apporter un typage dynamique fort en JavaScript. Cela permet d’identifier bien plus rapidement la source d’un problème grâce aux exceptions générées. Object Model est aussi bien plus simple à maîtriser que TypeScript: pas de nouveau langage, pas de phase de compilation, il se présente simplement sous la forme d’une micro-bibliothèque JavaScript.
J’aurais voulu connaître votre avis sur l’intérêt du typage dynamique VS typage statique. Je cherche aussi des testeurs pour mettre à l’épreuve cette bibliothèque et recueillir votre feedback. Merci