TypeScript 1.8 permet la compilation mixte avec le JavaScript
Plus besoin de convertir
Le 23 février 2016 à 10h20
3 min
Logiciel
Logiciel
Microsoft a annoncé hier soir la version 1.8 du langage TypeScript. Les développeurs pourront notamment mixer le code avec du JavaScript, évitant la conversion de tous les fichiers.
La version 1.8 de TypeScript est disponible depuis hier soir. Lancé en octobre 2012 par Microsoft, ce langage de script se veut un superset de JavaScript, dont il reprend une partie de la syntaxe, mais en lui donnant une orientation bien spécifique : la création de gros projets.
Le langage est typé et permet de réduire fortement le nombre de lignes de code nécessaire. Anders Hejlsberg, père du C#, en est l’un de ses créateurs. Le langage est devenu assez populaire, la version 2.0 d’AngularJS (un projet de Google) étant par exemple basée sur TypeScript.
Compilation mixte TypeScript/JavaScript
Depuis sa version 1.0, le langage a bien entendu beaucoup évolué. La mouture 1.8 sortie hier apporte encore un certain nombre d’améliorations, à commencer par la prise en charge du code JavaScript dans la compilation. Pour la première fois, un développeur peut inclure un tel code dans son projet TypeScript. La raison importe peu, l’essentiel étant de pouvoir le faire, au moyen de l’argument « --allowJS » en ligne de commande.
L’idée derrière cette capacité est de permettre à un développeur de recycler par exemple ses fichiers JavaScript en cas de passage à TypeScript pour un projet plus important. Cette compilation « mixte » évite notamment la conversion d’un trop grand nombre de fichiers de JavaScript vers TypeScript, avec les erreurs que cela peut supposer. En outre, une telle compilation signifie que le développeur peut utiliser virtuellement n’importe quelle bibliothèque tierce.
Attention aux cassures dans la compatibilité
Parmi les autres nouveautés, on signalera en particulier l’amélioration de l’inférence de type pour les unions et intersections, la gestion simplifiée des types props dans React, l’ajout des string literal types pour éviter certaines erreurs lors de l’écriture de paramètres de configuration, une analyse plus « intelligente » du contrôle de flux lors de la compilation (code injoignable, retours implicites…) ou encore l’augmentation des modules.
Attention, il existe quelques changements dans cette mouture qui peuvent rompre la compatibilité, notamment dans les API du DOM et dans le parsing strict de tous les modèles, y compris quand les cibles ne sont pas de type ECMAScript 6 (ES6).
Le téléchargement de TypeScript 1.8 peut se faire de plusieurs manières différentes, mais toutes sont disponibles depuis le dépôt GitHub de Microsoft. Les développeurs pourront par exemple récupérer une version compatible avec Visual Studio 2015, sous forme de paquet NuGet ou npm.
TypeScript 1.8 permet la compilation mixte avec le JavaScript
-
Compilation mixte TypeScript/JavaScript
-
Attention aux cassures dans la compatibilité
Commentaires (59)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 23/02/2016 à 17h16
@HarmattanBlow 13:50 Euh, et sinon ça va la hargne, serait pas temps d’arrêter le café ?
En effet, Chez JetBrains, ils savent bien faire les choses, j’ai d’ailleurs ma licence PhpStorm (webstorm +php)
Je n’ignore rien du tout, je ne partais simplement pas dans le développement d’un argumentaire car c’était pas mon propos.
Je
vous donne raison sur une chose, mon propos faisait lui-même la
démonstration d’une certaine suffisance en stigmatisant celle de mes
“adversaires” .
Et non je ne suis pas conscient des problèmes
du typage dynamiques, j’ai appris à faire du vélo sans les roulettes,
alors non j’ai pas trop de soucis. (ceci est une pique gratuite)
Je sais me servir convenablement
et sans abus du prototypage, et sans limite du pattern module, je sais
avoir recours à un ensemble plutôt solide d’outils pas pourri du tout (mon
IDE, mocha, l’écosystème et la structure mise en avant par
nodejs et son packager npm, sails, ember, …)
Je ne pense pas qu’une bonne code convention va sans un
minimum de commentaires surtout en entrée de définitions
d’objets/modules/fonctions
Le fait est , c’est vrai, que JS est moins
facile d’accès qu’il ne semble de prime abord. Il vient comme une flopée de pelotes de laine dans une grande boite et c’est très vite facile de faire un gros spaghetti en croyant qu’on sait tricoter. A contrario d’autres langages plébiscités par les “typeurs” viennent plus souvent avec une norme et des conventions plus stricte, ne serait-ce que par les écosystèmes qui leur sont presque indissociables (.Net, J2SE/J2EE/Spring … )
Pour commencer à le maitriser soit on
s’enferme dans le confort de librairies (Jquery) ou de framework
en vogue (angular, ember) soit on décide de comprendre les rouages (cf
le bouquin du mec qui a pondu jquery et dont la seconde édition
reviendra sur les les changements de ES6+) .
Je dois l’avouer je préfère un langage en mouvement (ça bouillonne dans la galaxie nodejs et puis ES6+) qu’être sur des rails.
Le 23/02/2016 à 18h39
L’ennui dans ton discours c’est que tout porte à croire que t’essaye de protéger ton patrimoine de compétences..
Comme les dev PHP qui te balancent “Nan mais le php c’est pas un langage bancale, c’est juste que les bon devs php sont rares” (<= donc le langage est bancale, cqfd.)
Ca m’étonne que tu nous ai pas encore sorti la rhétorique du marteau et du clou (je l’aime bien celle la).
Le 23/02/2016 à 18h59
Le 23/02/2016 à 19h00
Le 23/02/2016 à 19h07
Le 23/02/2016 à 19h43
Le 23/02/2016 à 19h54
Le 23/02/2016 à 19h56
Le 23/02/2016 à 20h01
Quand on recommande l’assembleur comme vrai langage, c’est qu’on est un gros élitiste qui aime bien se compliquer la vie pour se vanter.
Le 23/02/2016 à 20h13
Le 23/02/2016 à 20h48
Le 23/02/2016 à 21h10
Le 23/02/2016 à 21h29
Le 23/02/2016 à 22h33
Le 23/02/2016 à 22h36
Je me suis mal exprimé mais en disant “vrais langages de programmation” au pluriel je sous entendais qu’on va pouvoir programmer avec des langages compilés en webassembly. Pas qu’on allait programmer en webassembly directement ce qui serait pour le coup assez pénible.
Le 23/02/2016 à 23h05
Le 24/02/2016 à 00h48
Le 24/02/2016 à 08h04
J’ai étudié l’histoire des langages de programmation, la compilation, leur fonctionnement interne. Merci de m’expliquer quelles sont les erreurs à ne pas commetre, et de me dire quel est le langage qui répond aux problèmes pour lesquels JavaScript est actuellement utilisé.
Sinon mon CPU coûte peut-être plus cher que le revenu annuel de beaucoup d’humains, mais c’est mon outil de travail, et ramené à mon niveau de vie et à mon coût horaire, il vaut mieux en avoir 25 (horizontal scaling, la loi de moore on s’en fout) au lieu que je perde mon temps à gérer manuellement des problèmes réglés depuis des dizaines d’années avec les langages à haut niveau.
Est-ce que ton débat, c’est bas-niveau vs haut-niveau ?
Le 24/02/2016 à 08h24
Le 24/02/2016 à 11h31
Le 24/02/2016 à 11h36
Le 24/02/2016 à 15h53
+1000 , pas mieux
même si les ajouts de ES6 (notamment les “classes” … avec des guillemets car plutôt une pirouette syntaxique )
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Classes
me laissent un peu dubitatif.
Enfin … la communauté a parlé … “Tu l’as voulu tu l’a eu”
Pour revenir sur notre petit contentieux (vloz,sr17,harmatanblow, moi )
Somme toute c’est l’éternel débat de “chacun sa vérité”, en rapport à son contexte ou ses influences.
Ainsi chacun peut considérer que l’autre s’est fait brainwashé par l’un ou l’autre gourou, ou philosophie d’entreprise, ou paradigme tout puissant.
On atteindra pas l’ultime vérité aujourd’hui. :-)
@sr17 : Et le paradigme et les galaxies interminables de sous-projet de java ? à comparer avec l’effort nodejs ?
En matière d’IT, nier que cette vérité est toujours fonction d’évolutions et d’expérimentation, c’est un peu nier le vent. Dans ces évolutions/expérimentations, il y aura des buzz , bons et moins bons.
ça devrait étonner qui que les technologies du web, et des apps mobiles, se cherchent encore ?
Et puis c’est la dynamique du marché que de vouloir être de ceux qui apportent les bonnes réponses.
Le 24/02/2016 à 18h19
Faut vraiment pas aimer programmer pour ‘toucher’ a ces mer…
Le 24/02/2016 à 19h43
Le 24/02/2016 à 20h20
Le 24/02/2016 à 20h20
Je suis bien sûr au courant pour le ===, mais qu’ils aient été obligé d’ajouter un nouvel opérateur pour corriger les incohérences de l’opérateur de base montre bien que le langage a été mal pensé à l’origine.
Vous allez me dire que le comportement du == était fait pour faciliter certains développements mais au final c’est un choix initial pourri qui cause plus de mal que de bien.
Dans le même genre ça me fait penser au choix de MS de rendre les chemins de fichiers insensibles à la casse. Choix qui a simplifié la vie des utilisateurs du DOS mais qui aujourd’hui n’a plus d’intérêt et qui pause des problèmes de sécurité car un fichier peut se faire passer pour un autre.
Le 24/02/2016 à 20h34
Le 24/02/2016 à 20h52
Le 24/02/2016 à 22h18
Le 25/02/2016 à 07h26
Dans un langage avec typage faible, il aurait été plus judicieux de noter == l’égalité stricte (valeur + type) et utiliser un autre symbole, par exemple =~ pour une égalité qui effectue des conversions avant de déterminer son résultat. De cette manière les développeurs utiliseraient par défaut l’égalité stricte et cela éviterait plein de situation buggées.
Le 25/02/2016 à 07h33
Je n’ai pas compris le problème avec le == du c++ peux-tu développer ?
C’est parce qu’il n’était pas assez “intelligent” ?
Le 23/02/2016 à 11h09
Question à un utilisateur:
e vois que le langage est compilé.
Mais en quoi ?
Le 23/02/2016 à 11h19
Le 23/02/2016 à 11h21
En JS :)
Le 23/02/2016 à 11h25
Le 23/02/2016 à 11h33
C’est simple personne n’aime Dart comme atScript.
Le 23/02/2016 à 11h55
Oui mais atScript est abandonné donc, faut-il encore en parler ?
L’avantage de ts, c’est qu’il est plus aisé de coder des structures comme les langages c#, Java, ect…
Ca offre donc à des dev qui n’ont jamais fait bcp de js, de faire du code plus vite que d’apprendre js.
La question à se poser, c’est pourquoi Google à choisi Typescript pour angularjs 2 plutôt que son langage dart.
Le 23/02/2016 à 12h07
Pour l’utiliser tous les jours c’est quand même sacrément confort par rapport à du js.
Le code compilé est plus facilement lisible que du babel, l’intégration avec VS Code / VS Studio ou SublimeText est ok et le typage est appréciable, surtout lorsque que l’on est nombreux à travailler sur un projet. Dans l’ensemble j’ai l’impression de gagner du temps. Utilisé avec plusieurs librairies je n’ai eu aucun problème à convertir une SPA de javacript en typescript.
Ceci dit j’aimerais bien connaitre les raisons qui ont fait qu’Angular ait switché sur TS.
Le 23/02/2016 à 12h09
il semble en effet que c’était le résultat du sondage qu’ils avaient réalisé
http://news.softpedia.com/news/angular-2-survey-shows-typescript-s-popularity-am…
Le 23/02/2016 à 12h50
Le 23/02/2016 à 13h34
Le 23/02/2016 à 15h23
Ce qui me fait bien marrer dans la période actuelle, c’est cette prolifération des langages. Tout le monde veut faire le sien. Ca grouille de partout comme des champignons.
Et si encore c’était pour faire de bonnes choses. Malheureusement, tous ces langages sont aussi imparfaits, peu performants et mal fichus.
Quand je vois un site web moderne, je suis plié de rire. Des kilos de CSS, de montagnes de frameworks empilés… juste pour quelques images et bouts de texte. Parfois des animations minables.
Et c’est tellement lourd qu’il faut une puissance CPU démente juste pour afficher une simple page de texte.
Avec une machine dotée d’un petit CPU et de faibles ressources en RAM, il est impossible de surfer convenablement sur cet “internet pour les riches”…
Je prévoit d’avance que quelques uns vont se marrer en lisant mon post en pensant que je suis un vieux con.
Mais je prédit que vous rigolerez moins dans quelques années quand vous devrez apprendre votre 256ième langage de script bidon qui-viens-de-sortir juste pour faire des trucs minables et coller à la mode du moment.
Vous comprendrez alors l’intérêt d’un langage performant, unifié, bien pensé dès le départ et qui ne change pas toutes les 3 semaines.
Le 23/02/2016 à 16h07
Quel est ton langage performant, unifié, bien pensé dès le départ ? Ça serait bien aussi qu’il soit sécurisé, facile à déployer, facile à apprendre et à maintenir, ou tout simplement parfait ?
Le 23/02/2016 à 16h09
Le 23/02/2016 à 16h25
Le 23/02/2016 à 16h30
Bin y en a un sa s’appelle le JavaScript, sa fait des années que je l’utilise et il a toujours répondu a tous mes besoin, même les plus complexe ;)
Le truc c’est que pour bien l’utiliser il faut directement le considérer comme un Language Objet orienté Prototype et ne pas chercher a le rendre orienté Class…
De nos jours tous le monde veux faire du JS pour suivre la mode, mais personne ne veux se faire chier a l’apprendre vue que trop différent de la POO classique par Class, donc surcouche dégeux qui nous génère on sait pas trop quoi…
Si il y a un gros problème dans le monde JS de nos jours, c’est bien la mauvaise volonté de la majorité des dev qui au final ne veullent pas faire du JS!
Un gros +1 à sr17
PS: vive le Vanilla o/
Le 23/02/2016 à 16h42
Vivement que Webassembly soit finalisé et intégré aux navigateurs qu’on puisse afin programmer avec de vrais langages de programmation.
Le 25/02/2016 à 09h09
Le 25/02/2016 à 10h08
Le 25/02/2016 à 10h14
Le 25/02/2016 à 18h56
Le 25/02/2016 à 19h14
Le 25/02/2016 à 19h24
Le 25/02/2016 à 19h32
Le 26/02/2016 à 13h03
Bin, pour qui code tous seul dans son coin pour sa pomme, certe il fera bien se qu’il veut, mais dans une entreprise il y a (normalement) des convention, convention qui peuvent être d’utiliser la JSDocpar exemple.
Et je parle d’entreprise, mais tous bon dev devrais faire attention a sa façon de coder si il veut produire un code de qualité et je trouve sa moyen d’accuser le langage quand c’est le dev qui code comme un porc…
Aprés je vois pas pourquoi tu parle du compilo, que les variable sois typé dynamiquement n’empêche pas qu’elle sois belle et bien typé des qu’une valeur leurs est attribué.
Le 26/02/2016 à 17h25
Le 23/02/2016 à 10h46
Le langage est devenu assez populaire, la version 2.0 d’AngularJS étant par exemple basée sur TypeScript.
J’aurai tendance à dire que c’est exclusivement grâce ça… Typescript personne ne l’utilisait il y a encore quelques mois, et depuis l’annonce du passage atScript->Typescript d’Angular t’as plein de talks qui pop de partout avec des mecs en mode “Nan mais en fait TS c’est pas mal m’voyez”… :/
Pour l’utiliser au quotidien faut quand meme avouer que c’est beaucoup moins avancé que dart, qu’on retrouve pas mal des probleme majeur du js, et que Microsoft investi pas beaucoup dessus: le projet a l’air vachement community-driven, le nombre tsd est à la ramasse par rapport au nombre de library traduites en Dart (ce qui est quand meme une honte quand on voit le différence de trend), et ils ont pris du retard sur babeljs concernant le support d’es6/es7…
Bref, ça reste une bonne chose pour le petit monde du “anything-but-js”, mais je reste quand même pas mal sur ma faim… :/
Le 23/02/2016 à 11h09
J’ai du mal à comprendre,
On m’avait vendu le typescript comme un superset de js
on m’avait expliqué que le javascript était du typescript
Si tel était le cas, pourquoi avoir besoin du –allowJS ?
Le 23/02/2016 à 11h09