Bryan TCHAJIP
Retour au blog
TypeScript

Les Utility Types indispensables de TypeScript

20 juillet 20265 min de lecture
Les Utility Types indispensables de TypeScript

TypeScript fournit une boîte à outils de types utilitaires, construits à partir des génériques, pour transformer un type existant plutôt que d'en réécrire un nouveau. Voici les plus utiles au quotidien.

Partial<T> — tout rendre optionnel

interface User {
  id: number;
  name: string;
  email: string;
}

function updateUser(id: number, changes: Partial<User>) {
  // changes peut ne contenir que { name: "..." } par exemple
}

Pick<T, K> et Omit<T, K> — sélectionner ou exclure des champs

type UserPreview = Pick<User, "id" | "name">;
// { id: number; name: string }

type UserWithoutEmail = Omit<User, "email">;
// { id: number; name: string }

Ces deux types évitent de maintenir deux interfaces qui divergent silencieusement : UserPreview reste toujours synchronisé avec User, même si on ajoute un champ plus tard.

Record<K, V> — typer un dictionnaire

type ServiceStatus = "up" | "down" | "degraded";

const statusColor: Record<ServiceStatus, string> = {
  up: "green",
  down: "red",
  degraded: "orange",
};
// le compilateur signale immédiatement une clé manquante ou en trop

Readonly<T> — verrouiller un objet

Readonly<T> rend chaque propriété en lecture seule, utile pour représenter un état immuable ou une configuration qui ne doit plus changer après son initialisation.

Le point commun de ces types : ils dérivent toujours d'une seule source de vérité. Moins de duplication, moins de désynchronisation entre types liés, et un compilateur qui rattrape les oublis à votre place.

Une question sur cet article, ou envie d'échanger ?

Me contacter