1. Object is possibly 'undefined'
ts
// ❌
const name = user.profile.name;
// ✅ Optional chaining
const name = user?.profile?.name ?? "Anonyme";Cette erreur force à réfléchir aux cas limites. Si une valeur peut être absente, le code doit le gérer explicitement.
2. Type 'string | undefined' is not assignable to type 'string'
ts
// ❌
const id = searchParams.get("id");
fetchItem(id);
// ✅
const id = searchParams.get("id");
if (!id) return notFound();
fetchItem(id); // TypeScript sait que id est string ici3. Property does not exist on type 'never'
Cette erreur indique souvent un switch/case non exhaustif. La solution : ajouter un cas default avec une assertion d'exhaustivité :
ts
function assertNever(x: never): never {
throw new Error("Cas non géré : " + x);
}Le bénéfice net
Six mois après avoir activé le mode strict, je trouve les bugs en écrivant le code plutôt qu'en prod.