TypeScript
Bonnes pratiques
Architecture
Bonnes pratiques TypeScript pour des projets maintenables
Apprenez comment structurer vos projets TypeScript pour une meilleure maintenabilité et une collaboration d'équipe efficace.
10 janvier 2025•10 min
Bonnes pratiques TypeScript pour des projets maintenables
TypeScript améliore considérablement la qualité du code JavaScript, mais nécessite une certaine discipline. Voici les meilleures pratiques à adopter pour des projets durables et maintenables.
1. Définissez des types précis
Évitez d'utiliser `any` autant que possible. Ce type contourne le système de typage de TypeScript et annule ses avantages :
typescript
// À éviter
function processData(data: any): any {
return data.map(item => item.value);
}
// Préférez
interface DataItem {
value: string;
id: number;
}
function processData(data: DataItem[]): string[] {
return data.map(item => item.value);
}
2. Utilisez les interfaces pour les objets
Les interfaces sont parfaites pour définir la forme des objets et permettent l'extension :
typescript
interface User {
id: number;
name: string;
email: string;
}
interface AdminUser extends User {
permissions: string[];
}
3. Organisez vos types dans des fichiers dédiés
Pour les projets de grande envergure, créez des fichiers de définition de types pour chaque domaine :
typescript
// types/user.ts
export interface User {
id: number;
name: string;
email: string;
}
export type UserId = number;
export interface UserCreationParams {
name: string;
email: string;
password: string;
}
4. Utilisez l'inférence de types quand c'est pertinent
TypeScript est intelligent. Laissez-le déduire les types lorsque c'est évident :
typescript
// Inutilement verbeux
const numbers: number[] = [1, 2, 3].map((num: number): number => num * 2);
// Plus propre, même niveau de sécurité
const numbers = [1, 2, 3].map(num => num * 2);
5. Tirez parti des unions discriminées
Les unions discriminées permettent de créer des types complexes mais sûrs :
typescript
type Success = {
status: 'success';
data: User[];
};
type Error = {
status: 'error';
message: string;
};
type ApiResponse = Success | Error;
function handleResponse(response: ApiResponse) {
if (response.status === 'success') {
// TypeScript sait que response.data existe ici
console.log(response.data.length);
} else {
// TypeScript sait que response.message existe ici
console.error(response.message);
}
}
6. Configurez tsconfig.json correctement
Un fichier tsconfig.json bien configuré peut prévenir de nombreuses erreurs :
json
{
"compilerOptions": {
"strict": true,
"noImplicitAny": true,
"strictNullChecks": true,
"noImplicitReturns": true,
"noUncheckedIndexedAccess": true
}
}
7. Utilisez les génériques pour les fonctions réutilisables
Les génériques permettent de créer des fonctions polyvalentes tout en préservant la sécurité de type :
typescript
function getFirstItem(array: T[]): T | undefined {
return array[0];
}
const firstNumber = getFirstItem([1, 2, 3]); // Type: number
const firstString = getFirstItem(["a", "b", "c"]); // Type: string
Conclusion
En suivant ces bonnes pratiques, vous réduirez considérablement les bugs potentiels dans vos projets TypeScript et améliorerez leur maintenabilité. Le système de type de TypeScript est un outil puissant qui, utilisé correctement, peut transformer la qualité de votre code JavaScript.