
et une préservation plus intelligente des alias de type
Dans un article publié sur son blog ce 12 janvier, Microsoft a annoncé la version bêta de TypeScript 4.2. « Aujourd'hui, nous sommes heureux d'annoncer la disponibilité de la version bêta de TypeScript 4.2! Pour commencer à l’utiliser, vous pouvez vous rendre sur NuGet, ou utiliser la commande suivante : npm install typescript@beta », a déclaré Daniel Rosenwasser, le responsable TypeScript chez Microsoft.
Notons que npm permet aux développeurs JavaScript de partager et de réutiliser facilement le code. Il facilite la mise à jour du code et est distribué avec Node.js. Considéré comme l'une des technologies au cœur du World Wide Web, JavaScript est un langage de programmation permettant de rendre les pages Web interactives. Il permet d’effectuer une validation de formulaire, d’appliquer des animations et de créer des événements. Un grand nombre de sites web l'utilisent, et la plupart des navigateurs disposent d'un moteur JavaScript dédié pour l'interpréter.
TypeScript est un langage de programmation libre et open source développé par Microsoft qui a pour but d'améliorer et de sécuriser la production de code JavaScript. Il s'agit d'un sur-ensemble du JavaScript qui apporte un typage statique et optionnel des variables. Il permet de détecter certaines erreurs en amont et se compile en JavaScript pour une utilisation côté navigateur ou côté serveur à l'aide de NodeJS. Il présente plusieurs avantages :
- la prévention des bogues et la maintenabilité du code ;
- la prise en charge des interfaces, des sous-interfaces, des classes, des sous-classes ;
- la capacité de programmer en orienté objet avec l’héritage des membres privés et des interfaces.
Nouveautés apportées par TypeScript 4.2
Préservation plus intelligente des alias de type
Pour présenter les limites observées avec la précédente version de TypeScript, notamment lors de l’utilisation des heuristiques permettant de savoir quand et comment afficher les alias de type, Microsoft a exploité l’extrait de code suivant :
Code : | Sélectionner tout |
1 2 3 4 5 6 | export type BasicPrimitive = number | string | boolean; export function doStuff(value: BasicPrimitive) { let x = value; return x; } |
En examinant le cas où nous retournons un BasicPrimitive ou un undefined comme dans l’exemple ci-dessous, Daniel Rosenwasser et l’équipe TypeScript demontrent que : alors qu’on se serait attendu à ce que TypeScript affiche le type de retour de doStuff comme BasicPrimitive ou undefined, il affiche plutôt string | number | boolean | undefined!
L’équipe TypeScript a également fait le constat suivant : lorsqu’on crée l'union à partir d'un ou plusieurs types d'union, il normalise toujours ces types en un nouveau type d'union avec des pertes d’informations. Le vérificateur de type n'avait donc aucun moyen de savoir d'où venait string | number | boolean.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | export type BasicPrimitive = number | string | boolean; export function doStuff(value: BasicPrimitive) { if (Math.random() < 0.5) { return undefined; } return value; } |
Les éléments de type tuple
De façon générale, à partir des types de base (int, float, …), il est possible d’en élaborer de nouveaux. On parle alors de types construits. Un exemple de type construit est le tuple. Il permet de créer une collection ordonnée de plusieurs éléments. Les tuples ressemblent aux listes. Ils ne sont plus modifiables une fois qu’ils sont créés ; on dit qu’un tuple n’est pas mutable. Dans TypeScript, les types tuple sont destinés à modéliser des tableaux avec des longueurs et des types d'éléments spécifiques.
Un tuple qui stock une paire de nombres
Code : | Sélectionner tout |
let a: [number, number] = [1, 2];
Code : | Sélectionner tout |
let b: [string, number, boolean] = ["hello", 42, true];
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 | let foo: [...string[], number]; foo = [123]; foo = ["hello", 123]; foo = ["hello!", "hello!", "hello!", 123]; let bar: [boolean, ...string[], boolean]; bar = [true, false]; bar = [true, "some text", false]; bar = [true, "some", "separated", "text", false]; |
- Un contrôle plus strict pour l'opérateur in
En JavaScript, l'utilisation d'un type non-objet sur le côté droit de l'opérateur in entraîne une erreur d'exécution. TypeScript 4.2 garantit que cette erreur peut être détectée au moment de la conception ; - --noPropertyAccessFromIndexSignature
L’un des facteurs ayant facilité la transition du code JavaScript vers TypeScript est l’utilisation des « propriétés à point » comme syntaxe d'accès aux propriétés comme dans personne.nom. Partant du constat que les utilisateurs préfèrent recevoir un message d'erreur lorsque l’accès à une telle propriété ne correspond pas à une déclaration de propriété spécifique, Microsoft a introduit un nouvel indicateur appelé –noPropertyAccessFromIndexSignature ; - Signatures des constructeurs abstraits
TypeScript permet d’indiquer une classe comme étant abstraite. Libeller une classe comme étant abstraite indique que la classe est uniquement destinée à être étendue. Avec TypeScript 4.2, on peut spécifier un modificateur abstrait sur les signatures des constructeurs. L'ajout d’un modificateur abstrait à une signature de constructeur signale que l’on peut agir sur les constructeurs abstraits ; - --explainFiles : pour comprendre pourquoi des fichiers ont été inclus dans un programme
Selon un retour d’expériences utilisateur, une question étonnamment courante chez les utilisateurs de TypeScript est de se demander « pourquoi un fichier quelconque est inclus dans TypeScrip ? » TypeScript 4.2 apporte –explainFiles qui donne une sortie très détaillée sur la raison pour laquelle un fichier s'est retrouvé dans un programme. Pour le lire plus facilement, on peut transférer la sortie vers un fichier ou la diriger vers un programme qui pourra facilement l'afficher.
Microsoft dit être encore dans une phase initiale avec cette version bêta. Elle n'est pas encore stable et pourrait comporter quelques bogues. L’entreprise compte sur un retour d’expériences de ses utilisateurs pour produire une excellente version.
Source: Microsoft
Et vous ?

Voir aussi:





Vous avez lu gratuitement 10 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.