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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

TypeScript Discussion :

Microsoft annonce la version 1.5 alpha de TypeScript


Sujet :

TypeScript

  1. #1
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1 423
    Points : 8 699
    Points
    8 699
    Billets dans le blog
    43
    Par défaut Microsoft annonce la version 1.5 alpha de TypeScript
    Microsoft annonce la version 1.5 alpha de TypeScript
    Affectation par décomposition, compatibilité ES5/ES3 et décorateurs


    Sur son blog officiel, l'équipe TypeScript vient d'annoncer la disponibilité de la version 1.5 alpha de son langage, surensemble typé de JavaScript.

    De nombreuses fonctionnalités ont été ajoutées par rapport à la version précédente, notamment au niveau du support de la nouvelle norme ECMAScript 6 (qui devrait selon toute vraisemblance être adoptée officiellement au mois de juin).


    Modules
    C'est le cas par exemple des modules où il sera désormais possible d'importer sélectivement certaines portions d'un module (une classe en particulier ou une fonction par exemple).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import * as Math from "my/math";
    import { add, subtract } from "my/math";
    L'ancienne syntaxe concernant les modules, import en particulier, reste valide mais devrait à terme être dépréciée.


    Affectation par décomposition (destructuring)
    Cette possibilité syntaxique présente entre autres en Python et en Ruby, est également une fonctionnalité ES6 qui est implémentée dans la version 1.5 de TypeScript. Cela permet de rendre le code plus concis et plus clair quand à l'intention du développeur en se passant de variables temporaires.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var [x, y] = [10, 20];
    [x, y] = [y, x];  // a simple swap
    Grâce à cette technique il est également possible de se passer du nommage explicite d'un objet passé en argument d'une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var myClient = {name: "Bob", height: 6};
    function greetClient({name, height: howTall}) {
      console.log("Hello, " + name + ", who is " + howTall + " feet tall.");
    }
    greetClient(myClient);

    Compatibilité ES5 et ES3
    Certaines nouvelles fonctionnalités de la version 1.4 qui n'étaient compatibles qu'en ciblant du JavaScript ES6 telles que l'interpolation de chaînes (template strings), let ou const sont désormais compatibles avec une génération JavaScript en ES5 et ES3.

    Notons également l'introduction d'une nouvelle syntaxe de boucle for..of permettant d'itérer plus simplement sur les éléments d'une collection et non pas sur leur clé comme c'est actuellement le cas de for..in.

    Décorateurs
    Mais la grande nouveauté et surprise (car non inscrite à la feuille de route initiale) de cette version 1.5 est l'apparition des décorateurs issus en particulier du framework applicatif Angular. Cette collaboration entre Microsoft et Google a suffisamment défrayé la chronique pour que vous en ayez entendu parler.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Person {
      @memoize
      get name() { return `${this.first} ${this.last}` }
     
      set name(val) {
        let [first, last] = val.split(' ');
        this.first = first;
        this.last = last;
      }
    }
    Ici, le décorateur @memoize indique au compilateur TypeScript que les getter et setter sont à mettre en cache.

    À mettre également au crédit du rapprochement avec les frameworks MVC, TypeScript supportera la notion de computed properties, permettant de simplifier l'initialisation des objets aux propriétés dynamiques.


    API
    L'API du compilateur n'est pas en reste et propose de nouveaux services, mis en vitrine dans un plugin développé pour l'occasion pour l'éditeur Sublime Text.


    Cette API doit permettre à n'importe quel éditeur ou EDI de reconnaître la syntaxe de TypeScript et proposer de puissantes fonctionnalités de formatage et de refactoring sans développements significatifs. Ceci évidemment dans le but d'améliorer le support et la diffusion de ce langage.

    TypeScript se détache ainsi un peu plus de Visual Studio, sa matrice d'origine, en supportant de plus un fichier projet indépendant, tsconfig.json, au format JSON exploitable par n'importe quel éditeur et EDI.


    source : Blog officiel de l'équipe TypeScript

    Et vous ?
    Avez-vous déjà essayé cette version 1.5 alpha ?
    Que pensez-vous des nouveautés proposées ?
    Tutoriels et FAQ TypeScript

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 99
    Points : 303
    Points
    303
    Par défaut
    Incroyable, mais là, j'aime Microsoft Le langage commence à mûrir sympathiquement.

  3. #3
    Membre régulier Avatar de sitexw
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 44
    Points : 117
    Points
    117
    Par défaut
    La seule chose que je trouve "dommage" pour le moment, est le fait qu'il n'existe pas de machine virtuelle pour TypeScript de la même façon pour JavaScript avec NodeJS.
    Car toutes les fonctionnalités que TS apporte sont converti en JS avec au passage une perte de performance plus ou moins importante.
    Et que les fonctionnalités qui pourraient apporter de meilleure performance, comme le typage des variables n'existe pas sur Javascript.

    Je suis largement pour la progression de TypeScript (surtout en back), mais comment se projeter dans l'avenir avec un "langage" qui sera toujours limité par d'autre éléments (machine virtuelle, performance, ...).
    Je me vois pas dans 2 ans continuer à convertir mes lignes de code TS en JS à chaque fois que je fais un CTRL+S.

  4. #4
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1 423
    Points : 8 699
    Points
    8 699
    Billets dans le blog
    43
    Par défaut
    Citation Envoyé par sitexw Voir le message
    La seule chose que je trouve "dommage" pour le moment, est le fait qu'il n'existe pas de machine virtuelle pour TypeScript de la même façon pour JavaScript avec NodeJS.
    Car toutes les fonctionnalités que TS apporte sont converti en JS avec au passage une perte de performance plus ou moins importante.
    Et que les fonctionnalités qui pourraient apporter de meilleure performance, comme le typage des variables n'existe pas sur Javascript.

    Je suis largement pour la progression de TypeScript (surtout en back), mais comment se projeter dans l'avenir avec un "langage" qui sera toujours limité par d'autre éléments (machine virtuelle, performance, ...).
    Je me vois pas dans 2 ans continuer à convertir mes lignes de code TS en JS à chaque fois que je fais un CTRL+S.
    C'est une vraie problématique que tu soulèves là.

    Maintenant, TypeScript a résolument choisit la voie de la modestie par rapport à JavaScript.
    Et je n'ai pas l'impression que Microsoft soit décidé à faire le premier pas ou à forcer l'usage en natif de TypeScript dans les navigateurs ou côté serveur avec Node.js par exemple.

    Cependant, à un moment donné, l'industrie va quand même devoir prendre ses responsabilités vis-à-vis de JavaScript qui commence ou va commencer à devenir davantage un problème qu'une solution, notamment par rapport aux problèmes de performances, de scalabilité et de fiabilité du code.

    Google réfléchit déjà à introduire TypeScript ou une variante dans son moteur V8 de Chrome (cf. Chrome pourrait interpréter nativement TypeScript).
    Si cela se concrétise en production, nous pourrions voir un basculement bien plus important vers TypeScript que cela ne s'est produit jusqu'à présent, en incluant les récentes annonces d'Angular.

    Si l'industrie choisit le status quo avec un JavaScript seul langage universel côté navigateur, et connaissant tous les inerties dans le domaine, c'est tout à fait possible, alors TypeScript devra se contenter d'un rôle de supplétif face à JavaScript même s'il devrait continuer à se diffuser dans la communauté des développeurs (surtout ceux qui codent autre chose que des scripts de 10 lignes). Dans ce cas, TypeScript sera tout de même LE surensemble de JavaScript, un peu ce que le C++ est au C à l'heure actuelle, ce qui n'est déjà pas mal ! ^^
    Tutoriels et FAQ TypeScript

  5. #5
    Expert confirmé Avatar de Zefling
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    1 168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 168
    Points : 4 654
    Points
    4 654
    Par défaut
    Ça voudra dire qu'il faudra faire marcher les 2 VM (JS et TS) en même temps pour qu'elles puissent discuter ensemble. C'est peut-être ça qui bloque ?

  6. #6
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1 423
    Points : 8 699
    Points
    8 699
    Billets dans le blog
    43
    Par défaut
    Citation Envoyé par Zefling Voir le message
    Ça voudra dire qu'il faudra faire marcher les 2 VM (JS et TS) en même temps pour qu'elles puissent discuter ensemble. C'est peut-être ça qui bloque ?
    Pas vraiment puisque le code JavaScript est également du code TypeScript. Une seule VM TS suffirait en principe pour faire tourner tout le Web.
    Tutoriels et FAQ TypeScript

  7. #7
    Membre éclairé
    Avatar de Paleo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2013
    Messages : 242
    Points : 661
    Points
    661
    Par défaut
    Citation Envoyé par sitexw Voir le message
    La seule chose que je trouve "dommage" pour le moment, est le fait qu'il n'existe pas de machine virtuelle pour TypeScript de la même façon pour JavaScript avec NodeJS.
    Car toutes les fonctionnalités que TS apporte sont converti en JS avec au passage une perte de performance plus ou moins importante.
    Et que les fonctionnalités qui pourraient apporter de meilleure performance, comme le typage des variables n'existe pas sur Javascript.
    Pour le moment, le JavaScript est le bytecode de TypeScript. La VM est donc celle de JavaScript.

    Il n'y a aucune perte de performance lors de la compilation du code TS vers du JS. Il suffit de regarder le code JS généré pour s'en convaincre. Écrire du code JS directement ne permet pas d'obtenir de meilleures performances qu'en écrivant du code TS, en fait, le compilateur TS produit un code on ne peut plus propre.

    En revanche, il serait peut-être possible de faire encore mieux que JS. Yahiko avait publié un article sur des optimisations à l'exécution qui pourraient être faites à l'aide du typage, sur Chrome. C'est engageant, mais rappelons-nous que Google éparpille ses efforts parfois inutilement. Aujourd'hui toutes les équipes sont concentrées sur l'implémentation de EcmaScript 6, et, en ce qui concerne les VM, EcmaScript reste donc la seule valeur sûre des deux prochaines années.

    Citation Envoyé par sitexw Voir le message
    Je me vois pas dans 2 ans continuer à convertir mes lignes de code TS en JS à chaque fois que je fais un CTRL+S.
    Allons bon. Un compilateur n'est pourtant pas une hérésie, dans la programmation.

  8. #8
    Membre éclairé
    Avatar de Paleo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2013
    Messages : 242
    Points : 661
    Points
    661
    Par défaut
    Citation Envoyé par yahiko Voir le message
    Pas vraiment puisque le code JavaScript est également du code TypeScript. Une seule VM TS suffirait en principe pour faire tourner tout le Web.
    Pas tout à fait.
    Par exemple ce code passe en JavaScript mais est invalide en TypeScript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var s = 'abc';
    s = 123; // <- ici erreur de typage en TypeScript
    Le compilateur TS génère, malgré l'erreur, le code JavaScript attendu. Et c'est pourquoi l'on peut réellement renommer un fichier ".js" en fichier ".ts" et travailler dessus directement. Il n'en reste pas moins que les erreurs de typages sont invalides en TypeScript. Mais c'est vrai qu'une même VM pourrait avoir un mode d'exécution supplémentaire, comme le "use strict;" en est un.

  9. #9
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1 423
    Points : 8 699
    Points
    8 699
    Billets dans le blog
    43
    Par défaut
    Citation Envoyé par Tarh_ Voir le message
    Pas tout à fait.
    Par exemple ce code passe en JavaScript mais est invalide en TypeScript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var s = 'abc';
    s = 123; // <- ici erreur de typage en TypeScript
    Le compilateur TS génère, malgré l'erreur, le code JavaScript attendu. Et c'est pourquoi l'on peut réellement renommer un fichier ".js" en fichier ".ts" et travailler dessus directement. Il n'en reste pas moins que les erreurs de typages sont invalides en TypeScript. Et d'ailleurs il reste à prouver que des optimisations liées au typage seraient encore possibles si les erreurs de typage étaient tolérées.
    Au moins un qui connaît le langage
    On est d'accord. Cependant, selon les réglages de la VM TS, ce code peut ne pas être bloquant. Le programme peut continuer sa progression.
    Tutoriels et FAQ TypeScript

  10. #10
    Membre éclairé
    Avatar de Paleo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2013
    Messages : 242
    Points : 661
    Points
    661
    Par défaut
    Oui, j'ai édité, c'est vrai qu'une même VM pourrait être utilisée sur du code typé et non typé.

    Mais je me demande s'il serait intelligent d'embarquer toutes les infos de typage dans le code exécutable. Les définitions d'interfaces et les précisions de typage prennent de la place. Le fait qu'elles soient supprimées dans le code compilé est un gain de performance, au moins pour le temps de téléchargement du code vers le navigateur.

  11. #11
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1 423
    Points : 8 699
    Points
    8 699
    Billets dans le blog
    43
    Par défaut
    Je pense qu'une VM TS réellement utilisable dans le monde réel du Web, où l'exécutabilité doit primer sur la validité du code, le typage ne doit pas être une cause de plantage.

    Cependant, si le code et son typage sont consistants, il serait dommage de s'en priver, surtout pour indiquer certaines optimisations au compilateur.

    Autrement dit, en cas de conflit au niveau du typage, le bytecode résultant devrait supprimer le typage (ou utiliser le type any) et donc considérer les objets manipulés comme des pointeurs vers des emplacements mémoires (structures {...} ou chaînes de caractère).

    Si le typage est consistant et permet des optimisations, dans ce cas, le bytecode se devrait de conserver l'information sur les types, en particulier le type number pour les calculs et par conséquent considérer les objets manipulés comme des valeurs.
    Tutoriels et FAQ TypeScript

  12. #12
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2009
    Messages : 56
    Points : 163
    Points
    163
    Par défaut
    Citation Envoyé par Zefling Voir le message
    Ça voudra dire qu'il faudra faire marcher les 2 VM (JS et TS) en même temps pour qu'elles puissent discuter ensemble. C'est peut-être ça qui bloque ?
    En ce qui concerne Blink, ils disaient que techniquement ce n'etait pas un probleme insurmontable de faire cohabiter dart et js (qui sont beaucoup plus heterogene), mais ils attendaient que le nouveau GC OilPan soient terminé ce qui aurait (selon eux) tres largement simplifié l'implémentation d'autres langages aux coté de JS.

  13. #13
    Membre éclairé
    Avatar de Paleo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2013
    Messages : 242
    Points : 661
    Points
    661
    Par défaut
    Pour revenir sur le sujet de TS 1.5 : les modules ES6 en sont un élément majeur. En décembre dernier, Mozilla a annoncé qu'il ne livrera pas les HTML imports car les modules ES6 vont bouleverser la donne et (j'imagine) rendre caduque ce pilier des Web components.

  14. #14
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1 423
    Points : 8 699
    Points
    8 699
    Billets dans le blog
    43
    Par défaut La beta de la version 1.5 de TypeScript vient d'être publiée
    La beta de la version 1.5 de TypeScript vient d'être publiée

    Après avoir passé le stade de la version alpha correspondant à l'implémentation des fonctionnalités mentionnées dans un précédent post, l'équipe TypeScript de Microsoft vient d'annoncer la publication de la version beta.

    Cette beta s'accompagne des plugins pour Visual Studio 2013 et Visual Studio 2015 RC, ce qui permettra aux développeurs de tester les nouvelles fonctionnalités sans passer par le Dev Mode, pas toujours accepté en entreprise.

    On apprend aussi que pour pouvoir utiliser les décorateurs façon Angular 2 ou Aurelia, il vous faudra installer un polyfill, ce qui rompt avec l'absence de dépendances qu'avait TypeScript jusqu'à présent. Avec les futures fonctionnalités à venir dans la version 1.6 notamment (async/await et les générateurs), il faut sans doute s'attendre à ce que cette tendance se poursuive.

    Source : Blog officiel de TypeScript

    Et vous ?
    Attendiez-vous de pouvoir tester la version 1.5 ?
    Que pensez-vous de la nécessité de télécharger un polyfill pour les décorateurs ?
    Tutoriels et FAQ TypeScript

Discussions similaires

  1. Réponses: 20
    Dernier message: 10/12/2015, 20h52
  2. Microsoft annonce Power BI en version gratuite et une nouvelle version Pro
    Par Michael Guilloux dans le forum Microsoft BI
    Réponses: 1
    Dernier message: 29/01/2015, 18h09
  3. Microsoft annonce une nouvelle version de SkyDrive
    Par Gordon Fowler dans le forum Stockage
    Réponses: 3
    Dernier message: 02/12/2011, 10h35
  4. Microsoft annonce une nouvelle version de SkyDrive
    Par Gordon Fowler dans le forum Cloud Computing
    Réponses: 3
    Dernier message: 02/12/2011, 10h35
  5. Réponses: 5
    Dernier message: 18/02/2004, 18h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo