Avatar ·

Différence entre == et === en TypeScript

Bonjour à tous ! Pouvez-vous expliquer à un débutant en TypeScript : quelle est la différence fondamentale entre les opérateurs == et === ? J'ai lu qu'en JavaScript, le premier effectue une conversion de type, tandis que le second fait une comparaison stricte, mais en TypeScript, autant que je sache, les types sont déjà strictement contrôlés par le compilateur.

Voici un exemple qui me trouble :

const a: number = 5;
const b: string = "5";

if (a == b) {
  console.log("Égal avec ==");
}

if (a === b) {
  console.log("Égal avec ===");
}

Le premier if affiche un message, le second non. Je m'attendais à ce que TypeScript ne me permette même pas de comparer number et string sans conversion explicite, mais le code se compile. Pourquoi cela se produit-il ? TypeScript ne devrait-il pas générer une erreur sur a == b ? Ou est-ce une particularité du typage strict uniquement au niveau de la compilation, tandis qu'à l'exécution, la logique JS est toujours utilisée ?

J'ai essayé d'activer strict: true dans tsconfig.json — mais