IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Microsoft lance TypeScript,
Un sur-ensemble de JavaScript, en réponse à Google Dart

Le , par vermine

0PARTAGES

9  1 
Microsoft lance TypeScript
un sur-ensemble de JavaScript.


Microsoft répond peut-être à l'apparition de Google Dart en annonçant la sortie d'un nouvel outil de type JavaScript. Effectivement, TypeScript est un sur-ensemble de JavaScript, les deux syntaxes se ressemblent fortement et tout code JavaScript est un programme TypeScript valide. Son auteur n'est autre que Anders Hejlsberg, concepteur du Framework .NET et chef de l'équipe C# à Microsoft.

C'est tout d'abord un compilateur libre d'hébergement, mais il apporte surtout des fonctionnalités supplémentaires comme un typage statique, un système de classes et d'interfaces, une division en modules, la gestion de l'importation de fichiers, ou bien la distinction entre données publiques et privées.


Bien entendu, TypeScript est adapté pour l'environnement de développement Visual Studio, mais il fonctionne tout aussi bien avec d'autres éditeurs, ainsi que dans divers environnements JavaScript (les navigateurs, Node.js, etc.). Notons également que la vérification du type est effectuée au moment de la compilation pour ne pas gaspiller des cycles processeur en cours d'exécution.
Le typage statique permet ainsi l'utilisation d'outils qui facilitent la réalisation de grandes applications, que ce soit du côté client ou du côté serveur.

Le site officiel et l'annonce sur le blog MSDN.
Démonstration et vidéo.
Téléchargement.
Débuter avec TypeScript.

Et vous ?

Que pensez-vous de cet outil ?
N'est-ce pas un énième langage pour le développement ?
Préférez-vous Google Dart ?

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de rawsrc
Expert éminent sénior https://www.developpez.com
Le 02/10/2012 à 10:13
C'est dingue le nombre projets pour améliorer Javascript !
Au moins ça confirme qu'en l'état le Javascript n'est plus adapté aux besoins.

Cela ne serait-il pas plus simple qu'ils s'y mettent tous afin de refaire une spécification claire de la prochaine version de ce langage ?
Parce que vu l'usage croissant de ce langage dans les développements, ils y gagneraient tous à terme à faire route commune au lieu d'avoir des tas et des tas de rustines à droite et à gauche.

M'enfin, ce que j'en dis... C'est qu'en tant que développeur web, cette fragmentation va s'avérer très problématique. Sans compter que si les navigateurs n'implémentent pas le support de ces add-ons, ils seront tous morts-nés.
12  0 
Avatar de _skip
Expert éminent https://www.developpez.com
Le 03/10/2012 à 10:16
Issu du blog de Scott Hanselman :

What I like about TypeScript - so far - is that TypeScript’s static typing could enable better tooling with warning squiggles, easy statement completion, plus smart refactoring. You also get easy navigation around code, as well as find references, rename, and more.
Ce type a cerné le problème :

Voilà les avantages du typage statique, la détection d'erreur et le fait de rendre possible un support IDE poussé (refactoring, auto-complétion etc...).

Ces choses permettent justement de travailler efficacement en équipe, de s'y retrouver lorsque les bases de code deviennent importantes, d'être productif et d'économiser beaucoup de temps.

Citation Envoyé par wanou

On peut le faire en JavaScript actuellement, tout ce qui manque c'est une intégration digne de ce nom de JavaScript dans un IDE.
Dans l'état actuel de javascript, ceci n'est qu'à moitié possible justement. Ce n'est pas le seul langage dans cette situation, regarde PHP, tu verras que malgré la popularité et les années de bouteilles, aucun IDE ne peux t'offrir un support aussi avancé que C# ou java niveau refactoring et complétion.
L'IDE serait quasiment obligé d'exécuter le code from scratch pour savoir s'il est valide ou non.

Puis s'il vous plaît pour ceux que cela concerne, cessez de dire que c'est au développeur de faire attention. Vous n'utiliseriez pas les mêmes variables pour stocker des doubles, des chaînes et des pointeurs de fonction alors pourquoi tenez-vous tant à ce que ce soit possible niveau langage? En sachant que ça amène que des problèmes, tant pour les interpréteurs qui sont incapables d'optimiser, pour les IDE incapables de vous corriger, et pour vous qui risquez de vous faire avoir.
Pour ceux qui se croient tellement malins, vous êtes pas des machines mais des humains, en ce sens vous êtes faillibles et les autres membres de votre équipe aussi. Une fois sur 1000, 10000 ou 100000 lignes de code vous utiliserez une variable de façon inappropriée, ça marchera par bol dans vos tests (c'est là le plus traître) et ça posera problème en production.

Pour en revenir au sujet plus directement, je trouve qu'on a vraiment besoin de projets comme Dart ou TypeScript pour rendre le code JS plus sûr, plus maintenable et plus testable. Le seul point négatif c'est le danger de multiplication de ces JS-killers qui conduise à ce qu'aucun ne soit suffisamment répandu et viable.
10  0 
Avatar de Bovino
Rédacteur https://www.developpez.com
Le 12/10/2012 à 14:54
J'avoue qu'il y a quand même un argument récurent contre JavaScript qui a tendance à m'agacer (je pèse mes mots ) particulièrement...
JavaScript, c'est nul parce qu'il y a des incompatibilités entre les navigateurs...
Certes, c'est vrai qu'il y a des incompatibilités entre navigateurs (reste encore à connaitre le pourquoi... ) mais cela n'a rien à voir avec JavaScript...
Comme cela a déjà été dit mais qui ne semble pas pénétrer dans l'esprit de tout le monde, JavaScript ne peut exister que dans un environnement spécifique qui met à sa disposition une API.
De ce fait, JavaScript se compose de deux parties : une partie commune à tous les environnements (le core JavaScript) et une partie mise en place dans son environnement d'exécution (dans le cadre d'un navigateur, le clientside JavaScript ou l'API DOM).
Si les API DOM sont inconsistentes avec entre navigateurs, ce n'est en rien lié au langage lui-même mais uniquement aux navigateurs !
Dans les produits Adobe, par exemple, aucune incompatibilités puisqu'un seul fournisseur implémente l'API mise à disposition. Dans Node.js, même combat et on pourrait multiplier les exemples.
En revanche, quel que soit le navigateur, une boucle for aura le même comportement, idem pour l'opérateur new (un petit clin d'oeil pour tous ceux qui croient encore que JavaScript n'est pas orienté objet ).
De même, tous les objets du core (String, Number, Boolean, Array, Object, Function pour les principaux) auront les mêmes propriétés et méthodes dont le comportement est uniforme partout.
Ah... j'entends déjà dans l'oreillete : "Ben non justement, la méthode forEach de l'objet Array n'est pas disponible partout !"
Mauvais argument : ces méthodes récentes ne sont certes pas disponibles partout mais ça, c'est lié uniquement à le version du core implémentée (pour tout langage, les apports d'une nouvelle version ne sont pas applicables aux versions précédentes...) mais si l'environnement implémente la version suffisante du core, alors forEach sera disponible et son comportement identique quelle que soit la plate-forme.
9  0 
Avatar de camus3
Membre éprouvé https://www.developpez.com
Le 02/10/2012 à 17:15
Suis-je le seul à être choqué par ce type de remarque concernant JavaScript ?

J'en ai assez d'entendre que ce langage est un mauvais langage. Peu importe le langage, un mauvais codeur produira toujours du mauvais code. L'important est de maîtriser les outils que l'on a, et, désolé pour certains, JavaScript est langage pointu qui permet de faire de belles choses SI on s'en donne les moyens.

JavaScript n'est pas Java ou C++, donc oui, si vous voulez coder en JavaScript il vous faut d'abord apprendre à comment coder proprement.
Ce n'est pas un question de coder propement ou pas , c'est une question de productivité.

C'est exactement le même débat que pour CSS vs SASS et LESS.

cela implique de connaitre le langage de base tout en exploitant des possibilité s qui rendent le code plus maintenable et permettent au développeur d'être productif. JShint et JSlint sont des outils de vérification de qualité du code , pas d'analyse "statique" ou d'extension du code.

TypeScript permet d'organiser ses librairies de code dans des fichiers séparés afin de créer des composant dépendants facilement réutilisables , et introduit des structures qui ne seront pas adhoc avant un bon bout de temps => donc plus productif.

Et si Javascript était si bon que ça , pourquoi TC39 veut mettre des modules , des classes des structs , des proxys , des iterateurs des générateurs dedans si les développeurs n'en ont pas besoin ? les développeurs avaient ils besoin d'ES3.5 ?

Le but de TC39 est précis : créer un meilleurs javascript et faire de javascript une meilleurs cible de compilation pour les langages third-party. C'est pas moi qui le dit ,c'est TC39.

Microsoft ne fait que répondre à un besoin.
Des solutions qui compilent vers JS il y en a des centaines déja : haxe, JSX , coffeescript , iced coffee , clojurescript ,emscripten ,GWT , etc ... et ce n'est pas près de s'arrêter.

Les développeurs compilent même du C/C++ vers javascript :

https://github.com/kripken/BananaBread/
7  0 
Avatar de Lutarez
Membre chevronné https://www.developpez.com
Le 04/10/2012 à 16:58
Citation Envoyé par wanou Voir le message
Autant alors directement coder en JavaScript, non ? Moi ce que j'en dis... si vous voulez passer par des couches d'abstractions et vous compliquez la vie, cela vous regarde après tout...
Pourquoi coder en Java, .Net, C/C++, ... alors qu'on peut tout faire directement en assembleur !
7  0 
Avatar de _skip
Expert éminent https://www.developpez.com
Le 03/10/2012 à 12:34
Citation Envoyé par wanou Voir le message

Et comment crois-tu que travaillent actuellement les équipes JavaScript ? Heureusement que Microsoft est là pour nous montrer le chemin…
Mais si tu savais à quel point je m'en tape que ce soit microsoft, google ou tartempion qui propose des solutions....

Pourquoi il y a tant de librairies et de frameworks [pour limiter le recours à / abstraire / réorganiser] javascript? Peut être parce que les utilisateurs reconnaissent que certaines choses ne sont pas très adaptées à ce qu'on fait ou voudrait faire de JS aujourd'hui.

Alors lorsque des solutions comme Dart ou TypeScript sont proposées et adressent des problèmes concrets et réels de développement de grosse application, on a encore le droit de trouver ça positif. C'est pas parce qu'aujourd'hui on s'en sort avec ce qu'on a que tout est rose.


Là tu me parles IDE non ? Pourquoi avoir créé un nouveau langage plutôt que d'avoir amélioré leur IDE ?
Leur IDE pour javascript?
Ben parce que javascript de par son côté permissif et son organisation n'est pas un langage que tu peux facilement analyser afin d'offrir des fonctionnalités IDE vraiment avancées.
Si tu ne saisis pas en quoi un langage à typage statique et organisé est plus facile à supporter qu'un langage comme javascript ou php, je t'invite à aller sur les forums d'eclipse ou d'aptana, tu auras des centaines de réponse.

Et le support IDE n'est qu'un argument parmi d'autres en faveur des solutions à la dart/typescript, comme l'organisation du code et le travail en équipe facilité.


Je résume: je suis dev JS, donc forcement je suis un mauvais dev. OK.
Pfffff, j'ai dit ça nulle part, allez quoi! On fait que discuter on n'est pas des gamins.
6  1 
Avatar de wanou
Nouveau membre du Club https://www.developpez.com
Le 03/10/2012 à 14:32
Je me quote comme apparemment on ne m'a pas bien lu:

Citation Envoyé par wanou Voir le message
Je ne suis pas contre des initiatives comme TypeScript ou CaffeeScript, au contraire, mais le message actuellement véhiculé par Microsoft est tel que l'on croit que le problème est le langage (je vois des journalistes info dire que JavaScript n'est pas un langage OO ou typés… hallucinant). Je le prends comme une insulte à mon métier de dev JS.
J'ai fait du Delphi, C++, PHP, Python, travaillé longtemps en ASP.net, participé à des projets J2EE chez de grands éditeurs. Je connais donc, il me semble, un peu les différentes problématiques qui existent lors du développement d'un logiciel.

A mon avis (et désolé au passage d'avoir un regard critique quand un nouvel outil sort sur le marché), la démarche de TypeScript est un peu veine tout simplement parce que l'on nous dit "ce qui ne va pas dans le dev web, c'est le JavaScript. On vous fixe le JavaScript pour vous et tout va aller très bien". Or tous les dev web savent très bien que le problème n'est pas JavaScript mais le fait que chaque navigateur à un comportent spécifique et une gestion du DOM à améliorer.

Actuellement le debugging JavaScript est un petit bijoux grâce au debugger interne de chaque navigateur (Chrome en tête). Je fais mon projet en TypeScript, mon code est bien typé, ca compile bien, pas d'erreur, je suis heureux... mais ça bug au runtime. Je debugge comment et quoi ? Mon code JS généré ou mon code TypeScript ?

Aussi, le développement dans un contexte web avec JavaScript n'est pas parfait et ne conviendra pas forcément à tout le monde. Il a existé, existe et existera des outils pour nous cacher les tâches les plus ingrates et accélérer le développement d'app web. Mais il faut être objectif et bien connaître son métier pour savoir ce qu'il est plus à même de nous aider. Je dit simplement que oui, TypeScript c'est bien, mais uniquement dans un certain contexte et ce qu'il vous facilitera d'un côté, il vous le compliquera de l'autre.

Je terminerai avec ceci: les technologies autour du web sont en pleine effervescence et de gros acteurs sont sur le marché du dev web (Intel, Apple, Mozilla, Microsoft, Google, ...). Il ne faut plus jouer au naïf, quand un des ces acteurs nous sort un env de dev pour nous aider dans notre développement, il faut aussi comprendre ce que l'on va y perdre (connaissance d'une techno, dépendance avec un éditeur, ...) et comprendre quel est l'intérêt à cet acteur à nous vendre sa technologie.
4  0 
Avatar de Lutarez
Membre chevronné https://www.developpez.com
Le 02/10/2012 à 10:20
Je ne pense pas que le but de TypeScript soit de rivaliser avec Dart. Dart a plus ou moins pour but de remplacer JS. TypeScript serait plutôt un moyen d'étendre la syntaxe d'un langage qui évolue très peu.

Ayant toujours eu du mal avec l'approche par prototype, il faudra que j'essaye cette solution. D'ailleurs, on voit de plus en plus de projets ayant pour but de simplifier, d'optimiser et de faire évoluer le JS. C'est donc qu'il y a bien un besoin à ce niveau-là.

Dire que JQuery est le même but que Dart ou TypeScript, je pense que c'est une erreur. JQuery facilite certes beaucoup d'opérations, notamment concernant le DOM, mais n'est en rien une évolution du langage.
3  0 
Avatar de stardeath
Expert confirmé https://www.developpez.com
Le 03/10/2012 à 12:44
c'est dingue à chaque fois que tu (wanou) avances quelque chose, on croirait que ça doit être le cas pour tout le monde et que tout est parfait.

si des solutions apparaissent c'est que des gens en expriment le besoin.
3  0 
Avatar de ptah35
Membre éclairé https://www.developpez.com
Le 07/10/2012 à 12:37
Citation Envoyé par Lutarez Voir le message
La comparaison est certes grotesque, mais c'est malheureusement celle que tu fais concernant le JS et TS. Du moins, c'est l'impression que j'en ai.
Là où toi tu vois une surcouche, moi je vois une sorte de JS+.
Je pense quant à moi que la comparaison n'est pas si grotesque que cela. La compilation consiste à traduire un langage de programmation dans un autre; pour pouvoir utiliser un programme sur une certaine plateforme, il faut le traduire dans le langage de cette plateforme. Lorsqu'il s'agit d'un un OS, on le compile en langage machine, lorsque c'est une machine virtuelle on le compile en Bytecode ou MSIL. Le langage de la plateforme Web est le Javascript qu'on le veuille ou non. Il n'y a donc aucune raison de ne pas l'utiliser comme langage de destination d'un compilateur pour permettre aux personnes qui ne se sentent pas à l'aise avec ce langage de développer pour le Web. Quant aux discutions à propos de l'efficacité supposée moindre du code compilé par rapport à du code écrit à la main ont toutes déjà eu lieu lorsque John Backus à proposé son FORTRAN en l'an 54 du siècle dernier.

Personnellement, je n'ai aujourd'hui plus de préférence marquée pour le typage statique par rapport au typage dynamique, je vois les avantage de l'un et de l'autres et j'entends bien les arguments de leurs défenseurs respectifs, et ce depuis que j'ai dû me plonger un peu (beaucoup) malgré moi dans Javascript. Je n'aurais jamais pensé dire (et encore moins écrire) cela il y seulement un an, mais malgré ses quelques défauts bien connus, j'aime ce langage. Pour autant, je n'exclus pas utiliser un jour Typescript.
3  0