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 ?
Quelle est votre expérience avec TypeScript ?
Voir aussi:
Quels sont les frameworks JavaScript que vous aimeriez apprendre en 2020 ? Voici quelques propositions qui sont tributaires des cas d'utilisations
Quels sont les coûts liés à l'utilisation de frameworks JavaScript pour le développement Web ? Une analyse des sites utilisant React, Vue.js ou Angular
Microsoft annonce Playwright pour le langage Python, permettant de tester les applications Web et qui fonctionne dans tous les principaux navigateurs
Quels sont les meilleurs langages de programmation pour développer une application mobile ? Petit tour d'horizon sur les plus populaires
Visual Basic : Microsoft annonce qu'il va assurer la prise en charge du langage sur .Net 5, mais ne le fera plus évoluer pour rester compatible avec le .Net Framework