TypeScript : les bonnes pratiques pour un code maintenable
Apprenez à écrire du code TypeScript propre et maintenable avec ces patterns et conventions utilisés par les développeurs seniors.
Sharkade
Développeur Web Freelance
Introduction
TypeScript est devenu incontournable dans l'écosystème JavaScript moderne. Mais avoir TypeScript ne suffit pas : il faut l'utiliser correctement pour en tirer tous les bénéfices.
Voici les bonnes pratiques que j'applique quotidiennement pour écrire du code TypeScript maintenable et robuste.
1. Configuration stricte
Activez les options strictes dans tsconfig.json :
``json
{
"compilerOptions": {
"strict": true,
"noImplicitAny": true,
"strictNullChecks": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedIndexedAccess": true
}
}
`
2. Évitez any
any désactive le typage. Utilisez plutôt :
`typescript
// ❌ Mauvais
function process(data: any) { ... }
// ✅ Bon function process(data: unknown) { if (isValidData(data)) { ... } }
// ✅ Meilleur : typage explicite interface UserData { id: number; name: string; email: string; }
function processUser(data: UserData) { ... }
`
3. Types vs Interfaces
Utilisez les interfaces pour les objets et les types pour les unions/intersections :
`typescript
// Interface pour les objets
interface User {
id: number;
name: string;
}
// Type pour les unions type Status = "pending"
// Type pour les intersections
type AdminUser = User & { permissions: string[] };
`
4. Narrowing avec les type guards
`typescript
// Type guard personnalisé
function isUser(value: unknown): value is User {
return (
typeof value === "object" &&
value !== null &&
"id" in value &&
"name" in value
);
}
// Utilisation
function processData(data: unknown) {
if (isUser(data)) {
// TypeScript sait que data est User ici
console.log(data.name);
}
}
`
5. Generics intelligents
`typescript
// ❌ Trop générique
function fetchData
// ✅ Contraint et utile
interface ApiResponse
async function fetchApi
6. Utility Types natifs
TypeScript fournit des types utilitaires puissants :
`typescript
interface User {
id: number;
name: string;
email: string;
createdAt: Date;
}
// Tous les champs optionnels
type PartialUser = Partial
// Seulement certains champs
type UserPreview = Pick
// Exclure certains champs
type UserWithoutDates = Omit
// Tous les champs requis
type RequiredUser = Required
// Lecture seule
type ReadonlyUser = Readonly
7. Enums vs Union Types
Préférez les union types aux enums dans la plupart des cas :
`typescript
// ❌ Enum (génère du code JS)
enum Status {
Pending = "PENDING",
Active = "ACTIVE",
}
// ✅ Union type (zero runtime cost) type Status = "pending"
// ✅ Const object si vous avez besoin des valeurs const STATUS = { PENDING: "pending", ACTIVE: "active", INACTIVE: "inactive", } as const;
type Status = typeof STATUS[keyof typeof STATUS];
`
8. Gestion des erreurs typée
`typescript
// Résultat typé à la Rust
type Result
async function fetchUser(id: number): Promise
// Utilisation
const result = await fetchUser(1);
if (result.success) {
console.log(result.data.name); // TypeScript connaît le type
} else {
console.error(result.error.message);
}
`
9. Const assertions
`typescript
// Sans const assertion : type string[]
const colors = ["red", "green", "blue"];
// Avec const assertion : type readonly ["red", "green", "blue"] const colors = ["red", "green", "blue"] as const;
// Utile pour les configurations
const config = {
api: "https://api.example.com",
timeout: 5000,
} as const;
`
10. Organisation des types
Structure recommandée :
`
src/
├── types/
│ ├── index.ts # Exports centralisés
│ ├── api.ts # Types API
│ ├── models.ts # Types métier
│ └── utils.ts # Types utilitaires
``
Conclusion
TypeScript est un outil puissant quand il est bien utilisé. Ces bonnes pratiques vous aideront à écrire du code plus sûr, plus lisible et plus facile à maintenir.
Besoin d'accompagnement sur vos projets TypeScript ? Contactez-moi.
Tags
Partager cet article
Sharkade
Développeur Web Freelance à Lyon, spécialisé Next.js, React et e-commerce Shopify. Je partage ici mes retours d'expérience et conseils pour les développeurs.
Me contacterArticles similaires
Pourquoi choisir Next.js en 2024 pour votre projet web ?
Découvrez les avantages de Next.js par rapport aux autres frameworks React et pourquoi c'est devenu le choix privilégié des développeurs professionnels.
Lire la suite10 techniques SEO essentielles pour votre site web en 2024
Les meilleures pratiques SEO pour améliorer votre visibilité sur Google : Core Web Vitals, contenu optimisé, structure technique et bien plus.
Lire la suiteCréer une boutique Shopify performante : le guide complet
De la configuration initiale à l'optimisation des conversions, découvrez comment créer une boutique e-commerce Shopify qui génère des ventes.
Lire la suite