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

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

Nouvelles code actions en prime

Avatar de l'auteur
Vincent Hermann

Publié dans

Logiciel

23/02/2017 2 minutes
12

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

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.

12

Écrit par Vincent Hermann

Tiens, en parlant de ça :

Sommaire de l'article

Introduction

Compatibilité React Native et outils

Type object, new.target et mixin

Le brief de ce matin n'est pas encore là

Partez acheter vos croissants
Et faites chauffer votre bouilloire,
Le brief arrive dans un instant,
Tout frais du matin, gardez espoir.

Commentaires (12)




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.


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








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 :)









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…



@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”.


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








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.






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








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=" />



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é…


TypeScript est super, impossible de revenir en arrière :https://github.com/Microsoft/TypeScript/issues/10011



Mais tout n’est pas rose, il y qqs fonctionnalités manquantes et des régressions :

-&nbsp;https://github.com/Microsoft/TypeScript/issues/1573

-&nbsp;https://github.com/Microsoft/TypeScript/issues/12409#issuecomment-282172317

-&nbsp;https://github.com/Microsoft/TypeScript/issues/14256


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.