TypeScript: rendre JavaScript plus sûr
Lancé par Microsoft, compilé en JavaScript, ce langage est devenu le plus utilisé par des projets sur GitHub in 2025.
Le langage a été créé par Anders Hejlsberg qui est aussi l'auteur de Turbo Pascal et C#.
Au contraire de Dart de Google, qui offre les mêmes fonctions mais veut remplacer JavaScript dans les navigateurs, TypeScript est un frontend pour faciliter le travail du programmeur.
C'est un sur-ensemble de JavaScript: on peut reprendre un code écrit dans ce dernier, en faire un source TypeScript et y donner un type aux variables.
TypeScript est utilisé en production avec des retours toujours positifs, car il améliore beaucoup le productivité, et on n'a jamais envie de revenir à JavaScript. Le seul inconvénient notable étant la lenteur de compilation sur les gros projets. C'est le langage de programmation d'Angular 2 (de Google).
Le compilateur est open source sous licence Apache et construit avec Node.js et Jake, une sorte de Make, conçu pour les projets JavaScript, où les makefiles sont remplacés par des jakefiles. Le code source est lui-même écrit en TypeScript, et converti en un fichier unique TypescriptServices.js (le compilateur), il utilise donc l'interpréteur V8 de Google!
Le code exécutable du compilateur fait partie de Visual Studio et est disponible sous forme de module npm.
En 2025, le compilateur a été réécrit en langage Go, pour une rapidité de compilation accélérée dix fois.

Le playground montre comment le code TypeScript devient du JavaScript. Depuis ECMAScript 6 (2015) le code JS sera le même.
Les types statiques
La forme var x : boolean peut agacer dans un premier temps. Ecrire number x ou bool x comme en C aurait été plus simple. En suivant cette logique, au lieu d'écrire class x ou devrait écrire definition x : class.
Mais cela se justifie néanmoins ici par les types optionnels: on peut écrire var x et avoir une variable dynamique, et dont le type peut changer durant le traitement, ou ajouter un type statique. Le type est clairement une option, et cette syntaxe est dans la ligne de Asm.js ou de Julia.
Le langage comporte les types suivants:
- boolean.
- number.
- string.
- list: Converti en tableau, mais avec un type en option, dans ce cas converti en tableau typée.
- enum: Converti provisoirement en tableau ou constantes.
- const enum (1.4). Une constante avec plusieurs propriétés.
- any: type générique qui supporte toutes les valeurs.
- void: pour le retour des fonctions.
- undefined.
Fonctions
Une fonction peut avoir des arguments génériques par surcharge ou par union.
Exemple d'union:
function(s:string | string[])
Classes et interfaces
La syntaxe pour déclarer une classe est similaire à celle d'ECMAScript 6 et en fait à celle la plupart des langages de programmation. On définit le constructeur par le mot réservé constructor, et on ajoute this pour référence un attribut dans la classe.
Par exemple:
class voiture {
passagers = 4;
constructor(personnes : number) {
this.passagers = personnes;
}
mamethode(message : string) {
console.log(message);
}
}
var mavoiture = new voiture(2);
L'héritage se fait avec le mot-clé extends:
class voiture extends vehicule { ... }
Le constructeur peut appeler le constructeur de la classe héritée avec la méthode super(...) .
Les attributs étant publics par défaut, on a besoin seulement du mot-clé private pour déclarer un membre comme privé.
Le mot-réservé static peut s'appliquer au membres d'une classe afin de partager les valeurs assignées entre toutes les classes héritées.
L'héritage est traduit en JavaScript avec des prototypes tandis que les autres éléments servent seulement aux contrôles par le compilateur et ne sont pas convertis. Il est probable que le langage évoluera pour une traduction plus exacte quand ECMAScript sera largement implémenté.
Les classes peuvent être associées à des interfaces. Exemple:
class moteur extends voiture {
puissance : number;
}
interface voiture {
passagers : number;
}
var mavoiture : voiture = { passagers : 4, puissance : 300 };
On dispose donc à la fois de l'héritage et de la composition, ce que ne proposent pas les langages Go et Dart par exemple. Malheureusement ce ne semble pas non plus prévu pour ES 6 et pourra obliger à rester sur TypeScript si on en fait usage, car cela peut être utile pour la réusabilité du code.
Autres additions
Aperçu des autres possibilités du langage parmi les nombreuses fonctions que vous trouverez décrites en détails avec des exemples dans la documentation sur le site de TypeScript.
- Généricité. Un mécanisme est fourni avec la syntaxe <T> qui permet le multiple dispatch.
- Module. Fonctions, variables, classes peuvent être intégrées dans un module. Le mot reservé export permet de rendre une fonction utilisable hors du module. C'est similaire à ce qu'offre npm.
- Mixin. En remplaçant le mot-réservé extends par implements, on remplace l'héritage par le composition: on " implémente" ainsi une ou plusieurs classes et elles sont traitées comme des interfaces! C'est équivalent aux traits d'autres langages. Les méthodes des classes implémentées ne sont pas héritées, elles doivent être redéfinie dans la classe qui les intègre.
- Itérateur et générateur.
Utiliser TypeScript nativement
Avec Node.js depuis la version 23.6 il est possible d'utiliser TypeScript directement sans compilation en JavaScript.
Par Exemple:
let y: string;
function test(x: number): string {
return "test " + x;
}
y = test(10);
console.log( y );
Sauvez ce code dans le fichier tscript.ts et lancez node:
node tscript.ts
Pourquoi utiliser TypeScript?
L'avantage de TypeScript sur tous les autres langages qui sont compilés en JavaScript est qu'il en est un sur-ensemble: vous pouvez réutiliser un fichier JS et y inclure des fonctions ajoutées par TypeScript, puis renommer le fichier de .js en .ts.
Et quand le langage se développe, il se fait avec des fonctions définies dans ECMAScript 6 et suivants, et ainsi il reste un sur-ensemble de JS.
Disposer de variables typées est devenu aussi crucial avec l'utilisation de l'intelligence artificielle pour produire du code. La grande majorité des erreurs vient de types inapropriés en affectation ou arguments de fonctions, et elles sont trouvées dès la compilation du code TypeScript.
TypeScript semble indispensable pour réaliser un projet JavaScript de grande taille. Le code produit est aussi optimisé pour les interpréteurs JIT.
Liens externes:
TypeScript. Le site officiel.
Les auteurs du manual ont fait un effort particulier pour aider à apprendre le langage: chaque exemple peut être visualisé dans le playground où il peut être modifié, et est convertit en JS.
Télécharger le compilateur comme add-on pour Visual Studio. On peut l'obtenir sous Node avec la commande : npm install -g typescript.
Le langage est supporté outre VS par Eclipse et divers EDIs commerciaux.
Playground. Testez en direct la traduction d'un programme TypeScript en JavaScript.

