Avatar ·

Diferença entre == e === em TypeScript

Olá a todos! Por favor, expliquem para um iniciante em TypeScript: qual é a diferença fundamental entre os operadores == e ===? Eu li que em JavaScript o primeiro faz coerção de tipos, enquanto o segundo é uma comparação estrita, mas em TypeScript, pelo que entendi, os tipos já são estritamente controlados pelo compilador.

Aqui está um exemplo que me confunde:

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

if (a == b) {
  console.log("Igual com ==");
}

if (a === b) {
  console.log("Igual com ===");
}

O primeiro if exibe uma mensagem, o segundo não. Eu esperava que o TypeScript não me permitisse nem comparar number e string sem coerção explícita, mas o código compila. Por que isso acontece? O TypeScript não deveria gerar um erro em a == b? Ou isso é uma característica da tipagem estrita apenas em nível de compilação, enquanto em runtime a lógica do JavaScript ainda é usada?

Tentei ativar strict: true no tsconfig.json — mas