Connexion
Abonnez-vous

TypeScript 2.2 ajoute le type Object et se veut plus en phase avec React Native

Nouvelles code actions en prime

TypeScript 2.2 ajoute le type Object et se veut plus en phase avec React Native

Le 23 février 2017 à 15h00

Le langage TypeScript de Microsoft est désormais disponible en version 2.2. La nouvelle mouture se concentre tout particulièrement sur un meilleur support du framework React Native de Facebook, ajoute de nouvelles corrections rapides de code et officialise le type object.

TypeScript est, comme son nom l’indique, un langage de script. Il s’agit d’un surensemble de JavaScript, est totalement compatible avec ce dernier, et se destine à la gestion de gros projets. Open source (avec environ 150 contributeurs), il bénéficie d’un succès grandissant, au point d’ailleurs d’avoir été choisi par Google comme voie royale pour son Angular 2. Contrairement à JavaScript, il est transpilé de manière statique, ses erreurs étant vérifiées à la compilation, non à l’exécution.

Compatibilité React Native et outils

La nouvelle version 2.2 commence par s’accommoder davantage du framework React Native de Facebook. Elle propose un nouveau mode émission, react-native, sorte de combinaison entre les modes preserve et react. Il émet ainsi des fichiers .js, mais sans toucher à la syntaxe JSX. Pratique, selon Microsoft, quand on se sert de React Native, puisque ce dernier attend en entrée des fichiers .js.

L’éditeur présente également une amélioration des outils pour TypeScript, que l’on peut retrouver dans n’importe quel éditeur via un plug-in spécifique. La version 2.2 introduit ainsi de nouvelles « code actions », en fait des corrections rapides que le développeur peut appliquer : les importations et propriétés manquantes, this. oublié aux variables, le retrait des déclarations inutilisées et l’implémentation des membres abstraits.

Type object, new.target et mixin

TypeScript 2.2 ajoute en outre un nouveau type, baptisé object. Il correspond en fait à tous les types, sauf aux primitives. Traduction, le développeur peut lui affecter ce qu’il souhaite, sauf string, boolean, number, symbol, null et undefined, ces deux derniers dans le cas où strictNullChecks est utilisé.

Parmi les autres nouveautés de la version 2.2, signalons l’implémentation de la méta-propriété new.target. Cette fonctionnalité prévue dans ES2015 permet aux constructeurs de deviner si une sous-classe est en cours de construction, alors qu’ils ne peuvent normalement accéder à this avant d’appeler la méthode super(). En outre, la nouvelle mouture comprend mieux le modèle mixin.

Commentaires (12)

Vous devez être abonné pour pouvoir commenter.

Abonnez-vous
votre avatar



Parmi les autres nouveautés de la version 2.2, signalons l’implémentation de la méta-propriété new.target. Cette fonctionnalité prévue dans ES2015 permet aux constructeurs de deviner si une sous-classe est en cours de construction, alors qu’ils ne peuvent normalement accéder à this avant d’appeler la méthode super().





= hideuse magouille pour outrepasser les règles de l’orienté-objet.



Berk.

votre avatar

Ça tombe bien, il est prototypal le langage :p

votre avatar







nekogami a écrit :



Ça tombe bien, il est prototypal le langage :p





lol +1



Ou quand il vaut mieux la fermer et passer pour un couillon plutôt que de l’ouvrir et ne plus laisser de doute à ce sujet :)


votre avatar







brazomyna a écrit :



Ou quand il vaut mieux la fermer et passer pour un couillon plutôt que de l’ouvrir et ne plus laisser de doute à ce sujet :)





Vu que les languages objets à prototypes sont un sous type de POO, c’est idiot d’opposer les deux, vu que l’un est inclus dans l’autre. Donc oui, parfois il est préférable de ne pas l’ouvrir…


votre avatar

@brazomyna, ou le message récursif. C’est presque beau.



S’il n’a absolument pas la puissance de Self (http://handbook.selflanguage.org/4.5/intro.html), le système d’objets de javascript est bien inspiré de ce langage. Avant ES2015 il n’y avait même pas de déclaration “class”.

votre avatar

Je savais bien que je pigerai moins de 10% de l’article en le lisant… et pourtant je suis allé jusqu’au bout :)

votre avatar







nekogami a écrit :



Ça tombe bien, il est prototypal le langage :p







Comme dit par v6relou et bcy, le prototypal est déjà un type de POO.



Je trouve ca déjà limite de rajouter du sucre-syntaxique pour faire de la POO à coup de “class” et de “new”, alors que le prototypal fait de la POO par clonage. Mais bon, faut bien faire plaisir aux développeurs qui viennent de C++/Java/C# et qui sont habitués à du codage plus “rigide”.



Mais rajouter des fonctions pour outrepasser ce sucre-syntaxique rigide, c’est vraiment moche.



Je suppose que la prochaine évolution c’est de rajouter des règles strictes au dessus de tout ça…

… puis de rajouter des fonctions pour outrepasser les règles strictes.

etc.





votre avatar

J’ai fait la même, le troisième paragraphe m’a achevé.

votre avatar







v6relou a écrit :



Vu que les languages objets à prototypes sont un sous type de POO, c’est idiot d’opposer les deux, vu que l’un est inclus dans l’autre. Donc oui, parfois il est préférable de ne pas l’ouvrir…





Sauf que si tu savais un peu comprendre ce que tu lis, et réfléchir plutôt que brandir des mots et leur définition sans comprendre leur sens et leur relation, tu aurais noté qu’il parle de ce qu’il appelle les ‘règles de l’OO’. Et quelles sont les règles dont il parle ?



<img data-src=" /> <img data-src=" /> <img data-src=" />



<img data-src=" />


votre avatar

C’est une standardisation du principe et un gain pour le développeur qu’ils viennent de C++/Java/C# ou d’ailleurs. Il n’y a pas d’opposition ni de rigidité…

votre avatar

TypeScript est super, impossible de revenir en arrière :github.com GitHubMais tout n’est pas rose, il y qqs fonctionnalités manquantes et des régressions :

-&nbsp;github.com GitHub-&nbsp;github.com GitHub-&nbsp;github.com GitHub

votre avatar

Wahou il a utilisé le mot règle au lieu de principe, ça mérite au moins la peine de mort… C’est plutôt à vous que le français a l’air de poser problème.

TypeScript 2.2 ajoute le type Object et se veut plus en phase avec React Native

  • Compatibilité React Native et outils

  • Type object, new.target et mixin

Fermer