Pourquoi utiliser TypeScript
Un article de Tarh
Le 2014-06-30 14:17:44, par Paleo, Membre éclairé
« TypeScript, le langage compilé en JavaScript ? Mais pourquoi faudrait-il quitter JavaScript ? »
Le langage JavaScript ne manque pas d'atouts et le mieux est souvent l'ennemi du bien. Délaisser ce qui fonctionne est un risque. Et puis il existe de solides arguments en défaveur des langages construits sur JavaScript, examinons-les :
Je répondrai à ces trois questions au fil de l'exposé tout en situant TypeScript par rapport aux technologies concurrentes. Je tenterai ensuite de donner envie au lecteur d'essayer.
Le langage JavaScript ne manque pas d'atouts et le mieux est souvent l'ennemi du bien. Délaisser ce qui fonctionne est un risque. Et puis il existe de solides arguments en défaveur des langages construits sur JavaScript, examinons-les :
- la question de la pérennité des syntaxes non standard ;
- la problématique de l'intégration avec l'existant ;
- la difficulté de former ou de trouver les développeurs.
Je répondrai à ces trois questions au fil de l'exposé tout en situant TypeScript par rapport aux technologies concurrentes. Je tenterai ensuite de donner envie au lecteur d'essayer.
Voici le sommaire :
I. TypeScript est un choix sans risque
II. Faire coopérer TypeScript et JavaScript ?
III. La syntaxe TypeScript est pérenne
IV. TypeScript et Microsoft ?
V. La programmation orientée objets et TypeScript
VI. Les interfaces TypeScript
VII. Typage statique ?
VIII. Comment démarrer avec TypeScript
IX. Remerciements
II. Faire coopérer TypeScript et JavaScript ?
III. La syntaxe TypeScript est pérenne
IV. TypeScript et Microsoft ?
V. La programmation orientée objets et TypeScript
VI. Les interfaces TypeScript
VII. Typage statique ?
VIII. Comment démarrer avec TypeScript
IX. Remerciements
-
BovinoRédacteurArticle intéressant et très clair !
Néanmoins, je trouve que certains points sont sujets de débat...
D'une part, je rejoins SylvainPV concernant les prototypes, mais c'est peut-être l'habitude de les utiliser.
Ensuite
Un mécanisme sert à émuler un comportement de classe : le prototype dont l'usage est malheureusement verbeux, affreusement moche et incomplet.) mais je vois mal en quoi il te parait verbeux...
Peut-être veux-tu juste parler de certains de ses aspects, comme par exemple l'héritage où effectivement, en plus d'être lurd et verbeux, c'est surtout fastidieux !
Surtout, il n'est pas destiné, sauf erreur grossière de ma part, à émuler un comportement de classe, au contraire, il propose une autre façon de considérer la POO.
Impossible en particulier de déclarer des membres privés dans le prototype.
Mais encore une fois, ces considérations sont sujettes à débat !
EDIT :
Envoyé par SylvainPV le 01/07/2014 à 14:03 -
SylvainPVRédacteur/Modérateur+1 pour l'excellent IDE qu'est WebStorm. Mais c'est amusant que tu le mentionnes, car c'est aussi la raison pour laquelle je n'ai pas essayé TypeScript pour l'instant. En effet, pour peu qu'on ait pris la bonne habitude de documenter ses fonctions, WebStorm se charge de vérifier les types : http://blog.jetbrains.com/webide/201...s-annotations/
Du reste, je préfère les prototypes aux classes et aux interfaces, donc TypeScript ne m'apportait finalement rien. Mais je pense que ça doit attirer beaucoup plus les développeurs Java.le 01/07/2014 à 10:23 -
PaleoMembre éclairéL'héritage non et d'ailleurs le plus souvent l'héritage est une fausse bonne idée (
).
C'est juste que, lorsqu'on raisonne sur des classes (c-à-d des objets faits dans le même moule), on doit écrire le prototype puis une éventuelle fonction "factory" qui produit l'instance en lui affectant le prototype, en JS il y a mille manières de le faire alors qu'il devrait y en avoir zéro puisque c'est au langage de faire ça. Plus les répétitions des ".prototype." pour déclarer les membres, je sais, c'est évitable mais en pratique on n'évite pas. Comparez dans le Playground le code TS au code JS généré : malgré les informations de typage en plus, dont une interface, le code TS est plus court et plus lisible.
De toute manière ES6 règlera ce point.
Tiens c'est vrai ça, c'est une erreur de ma part. J'aurais dû écrire qu'il "peut servir" et non qu'il "sert".
Tout à fait juste.
Des méthodes privées auraient pourtant du sens.le 01/07/2014 à 15:34 -
SylvainPVRédacteur/ModérateurTu veux parler du keyword "class" ? De mon point de vue, il ne règle rien du tout, au contraire il ajoute une énième façon de faire de la programmation objet en JavaScript, en perdant les avantages des prototypes.
Le code présenté sur le typescript playground reprend le pattern classique (fonctions et opérateur new) et non le pattern prototype pur (objets et Object.create). Voilà ce que ça donnerait en prototypes :Code : 1
2
3
4
5
6
7
8
9var Greeter = { greeting: "anonymous", greet: function () { return "Hello, " + this.greeting; } }; var greeter = Object.create(Greeter); greeter.greeting = "world";
le 01/07/2014 à 16:34 -
PaleoMembre éclairéMerci pour l'exemple, je n'ai encore jamais utilisé Object.create(), compatibilité avec IE8 oblige. Mais à mort IE8 ! Néanmoins je trouve peu élégante la double existence de la variable "greeting" au niveau du prototype et au niveau de l'instance.
Par certains côtés ce débat me fait penser à celui du C versus le C++.le 01/07/2014 à 18:28 -
jolt-counterMembre régulierBon article,
par contre je rebondis sur un point.
Pas besoin d'un IDE pour coder en TypeScript.
Perso j'avais commencé à coder en TypeScript en 2013 avec Vim et la ligne de commande. Pour Vim, Emacs, Notepad++ et sans doute d'autres simple éditeurs de texte, il existe des plugins pour avoir la coloration syntaxique de TypeScript.
D'ailleurs pour bien se familiariser avec la compilation de TypeScript vers JavaScript, je recommande de commencer par la ligne de commande sans utiliser de fichier de configuration comme tsconfig.json.
Sinon, un bon IDE gratuit, léger et multiplateforme supportant très bien le TypeScript est Visual Studio Code, je le recommande grandement.le 22/06/2017 à 11:36 -
PaleoMembre éclairéle 01/07/2014 à 13:41
-
PaleoMembre éclairéBonjour jolt-counter, merci pour le retour positif.
Je suis également passé à Visual Studio Code pour les projets TypeScript et/ou JavaScript. Mon article date un peu. En 2014, cet excellent éditeur n'existait pas.le 30/06/2017 à 17:18