Introduction
TypeScript est un surensemble de JavaScript qui ajoute le typage statique. Cree par Microsoft en 2012, il est devenu incontournable : selon l'enquete State of JS 2024, 78 % des developpeurs JavaScript utilisent TypeScript, et 90 % declarent vouloir continuer.
Les plus grands projets du web sont ecrits en TypeScript : VS Code, Angular, Deno, Supabase, Prisma. React et Next.js le supportent nativement.
Le probleme que TypeScript resout
Les erreurs silencieuses de JavaScript
JavaScript est un langage a typage dynamique : les types sont determines a l'execution, pas a l'ecriture. Cela signifie qu'une erreur de type ne sera decouverte que quand le code sera execute — parfois en production.
// JavaScript : aucune erreur a l'ecriture
function calculateTotal(price, quantity) {
return price * quantity;
}
calculateTotal("19.99", 3); // "19.9919.9919.99" (string * number)
// Pas d'erreur, mais le resultat est faux !La solution TypeScript
// TypeScript : erreur detectee immediatement
function calculateTotal(price: number, quantity: number): number {
return price * quantity;
}
calculateTotal("19.99", 3);
// Erreur : Argument of type 'string' is not assignable to parameter of type 'number'L'erreur est detectee avant l'execution, directement dans votre editeur.
Les benefices concrets
1. L'autocompletion intelligente
Avec TypeScript, votre editeur (VS Code) sait exactement quelles proprietes et methodes sont disponibles sur chaque variable. Plus besoin de consulter la documentation — tout est suggere automatiquement.
2. La refactorisation sans peur
Renommer une fonction, modifier la structure d'un objet, changer le type d'un parametre : TypeScript identifie immediatement tous les endroits du code affectes. La refactorisation passe de « operation risquee » a « operation de routine ».
3. La documentation vivante
Les types servent de documentation qui ne peut pas devenir obsolete (contrairement aux commentaires) :
interface User {
id: string;
email: string;
name: string;
role: 'admin' | 'editor' | 'viewer';
createdAt: Date;
}
function getUserDisplayName(user: User): string {
return user.name || user.email;
}En lisant la signature de la fonction, vous savez immediatement ce qu'elle recoit et ce qu'elle retourne.
4. La reduction des bugs
Selon une etude d'Airbnb publiee en 2019, 38 % des bugs auraient ete evites si TypeScript avait ete utilise. C'est un chiffre considerable, surtout quand on sait que corriger un bug en production coute 10 a 100 fois plus cher qu'en developpement.
Les fonctionnalites essentielles
Les types de base
const name: string = "Marie";
const age: number = 28;
const isActive: boolean = true;
const tags: string[] = ["react", "typescript"];Les interfaces et types
interface Product {
id: string;
name: string;
price: number;
description?: string; // optionnel
}
type Status = 'draft' | 'published' | 'archived'; // union de literauxLes generics
Les generics permettent de creer des fonctions et types reutilisables :
function getFirst<T>(items: T[]): T | undefined {
return items[0];
}
const firstNumber = getFirst([1, 2, 3]); // type: number
const firstString = getFirst(["a", "b", "c"]); // type: stringCommencer avec TypeScript
Avec un projet existant
TypeScript peut etre adopte progressivement. Renommez vos fichiers .js en .ts un par un. TypeScript accepte le JavaScript valide — vous pouvez ajouter les types graduellement.
Avec un nouveau projet
# Avec Vite (React)
npm create vite@latest mon-projet -- --template react-ts
# Avec Next.js
npx create-next-app@latest --typescriptLa configuration recommandee
{
"compilerOptions": {
"strict": true,
"noUncheckedIndexedAccess": true,
"target": "ES2022",
"module": "ESNext",
"moduleResolution": "bundler"
}
}Le mode strict active toutes les verifications de securite. C'est exigeant au debut, mais c'est la meilleure facon d'exploiter TypeScript.
Conclusion
TypeScript n'est pas un luxe reserve aux grands projets — c'est un investissement qui se rentabilise des les premieres centaines de lignes de code. L'autocompletion, la detection d'erreurs et la documentation automatique ameliorent la productivite quotidienne. Si vous ecrivez du JavaScript, vous devriez ecrire du TypeScript.
