Definition
TypeScript est un langage de programmation open source developpe par Microsoft. C'est un sur-ensemble de JavaScript qui ajoute le typage statique optionnel, les interfaces, les enums et d'autres fonctionnalites de typage avancees.
Tout code JavaScript valide est du TypeScript valide. TypeScript est compile (transpile) en JavaScript standard qui s'execute dans n'importe quel environnement JS.
Pourquoi TypeScript ?
Detection d'erreurs au compile time
function greet(name: string): string {
return `Hello, ${name}`;
}
greet(42); // Erreur au compile time : Argument of type 'number' is not assignable to parameter of type 'string'
Auto-completion intelligente
Le typage permet aux IDE de fournir une auto-completion precise et du refactoring sur.
Documentation vivante
Les types servent de documentation qui ne peut pas devenir obsolete.
Types de base
// Primitifs
let nom: string = "Alice";
let age: number = 30;
let actif: boolean = true;
let data: null = null;
// Tableaux
let langages: string[] = ["TS", "Python"];
let scores: Array<number> = [95, 87, 92];
// Objets
interface User {
id: number;
name: string;
email: string;
role?: string; // optionnel
}
// Union types
type Status = "active" | "inactive" | "pending";
// Generics
function first<T>(arr: T[]): T | undefined {
return arr[0];
}
Types avances
// Utility types
type PartialUser = Partial<User>; // tous optionnels
type RequiredUser = Required<User>; // tous requis
type UserName = Pick<User, "id" | "name">; // sous-ensemble
type NoEmail = Omit<User, "email">; // exclure
// Conditional types
type IsString<T> = T extends string ? true : false;
// Mapped types
type Readonly<T> = { readonly [K in keyof T]: T[K] };
// Template literal types
type HttpMethod = "GET" | "POST" | "PUT" | "DELETE";
type Endpoint = `/api/${string}`;
// Discriminated unions (tres utile !)
type Result<T> =
| { success: true; data: T }
| { success: false; error: string };
function handle(result: Result<User>) {
if (result.success) {
console.log(result.data.name); // TypeScript sait que data existe
} else {
console.log(result.error); // TypeScript sait que error existe
}
}
Configuration (tsconfig.json)
{
"compilerOptions": {
"target": "ES2022",
"module": "ESNext",
"strict": true,
"noUncheckedIndexedAccess": true,
"esModuleInterop": true,
"outDir": "./dist",
"rootDir": "./src"
},
"include": ["src/**/*"]
}
TypeScript en 2026
- Standard de facto pour les projets JavaScript professionnels
- Supporte nativement par Deno et Bun
- Node.js 22+ supporte le type stripping (execution directe de .ts)
- Ecosysteme mature : tous les frameworks majeurs sont ecrits en TypeScript