Microsoft annonce la disponibilité de TypeScript 2.2 qui propose plus d'options de corrections rapides d'erreur
et le support de new.target

Microsoft a annoncé la disponibilité générale de TypeScript 2.2, le langage de programmation libre et open source développé par ses soins qui ambitionne d'améliorer et de sécuriser la production de code JavaScript.

Daniel Rosenwasser, le responsable de l’équipe dédiée au développement de TypeScript, a rappelé que « l'un des domaines sur lesquels nous nous concentrons en TypeScript est son outillage - l'outillage peut être exploité dans n'importe quel éditeur avec un système de plug-in ». Aussi, avec TypeScript 2.2, Microsoft a rajouté des « correctifs rapides » qui vont vous permettre de corriger plus rapidement certaines erreurs. Parmi ces correctifs, figurent entre autres :
  • l’ajout des importations manquantes ;
  • l’ajout de propriétés manquantes ;
  • l’ajout d’un this. oublié aux variables ;
  • la suppression des déclarations inutilisées ;
  • l’implémentation des membres abstraits.

Aussi, pendant que vous rédigerez votre code, TypeScript peut vous proposer des suggestions qui pourraient vous aider à vite repérer vos erreurs.

Le type object :

Il s’agit d’un nouveau type qui correspond à tous les types sauf pour les types primitifs. En d'autres termes, vous pouvez affecter n'importe quoi au type objet à l'exception de [C]string[/], boolean, number, symboL. De plus, lorsque vous utilisez strictNullChecks, vous ne pourrez pas vous servir de null et de undefined.

« object se distingue du type {} et des types Object en raison de la compatibilité structurelle. Étant donné que le type objet vide ({}) correspond également aux primitives, il ne peut pas modéliser les API comme Object.create qui n'attendent que des objets, et non des primitives », a expliqué Rosenwasser.

Une amélioration de l’indexation de la chaîne de caractères :

TypeScript s’appuie sur le concept index signatures. Ces derniers font partie d'un type et indiquent au système de type le résultat d'un accès d'élément. Considérons l’exemple suivant :

Code TypeScript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
interface Foo {
    // Voici la signature d’index de la chaîne de caractères :
    [prop: string]: boolean;
}
 
declare const x: Foo;
 
const y = x["hello"];

Foo a une signature d'index de chaîne de caractères qui indique que « chaque fois qu’il y aura une indexation avec une chaîne, alors le type de sortie sera un booléen ». L'idée principale est que les signatures d'index ici sont censées modéliser la façon dont les objets servent souvent de cartes/dictionnaires en JavaScript.

Avant TypeScript 2.2, écrire quelque chose comme x["propName"] était le seul moyen de faire usage d'une signature d'index de chaîne pour saisir une propriété. Paradoxalement, écrire un accès de propriété comme x.propName n'était pas autorisé. Ce qui vient donc en légère contradiction avec la façon dont JavaScript fonctionne réellement puisque x.propName est sémantiquement identique à x["propName"].

« Dans TypeScript 2.2, nous faisons exactement cela et relaxons l'ancienne restriction. Ce que cela signifie est que des choses comme tester les propriétés sur un objet JSON sont devenues beaucoup plus ergonomiques », a expliqué Rosenwasser.

Code TypeScript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
interface Config {
    [prop: string]: boolean;
}
 
declare const options: Config;
 
// avant c’était une erreur, désormais c’est permis
if (options.debugMode) {
    // ...
}

Support de new.target :

L’équipe TypeScript a implémenté la propriété new.target. Pour rappel, la propriété new.target permet de détecter si une fonction ou un constructeur a été appelé à l'aide du nouvel opérateur. Dans les constructeurs et les fonctions instanciés avec le nouvel opérateur new.target renvoie une référence au constructeur ou à la fonction. Dans les appels de fonction normaux, new.target est indéfini.

Source : blog Microsoft

Et vous ?

Utilisez-vous TypeScript ?

Laquelle de ces améliorations/nouveautés vous intéresse le plus ?

Quelle est l'amélioration/nouveauté que vous aimeriez voir implémentée ?