Разница между == и === в TypeScript
Всем привет! Подскажите, пожалуйста, новичку в TypeScript: в чем принципиальная разница между операторами == и ===? Я читал, что в JavaScript первый делает приведение типов, а второй — строгое сравнение, но в TypeScript, насколько я понимаю, типы уже строго контролируются компилятором.
Вот пример, который меня смущает:
const a: number = 5;
const b: string = "5";
if (a == b) {
console.log("Равно с ==");
}
if (a === b) {
console.log("Равно с ===");
}Первый if выводит сообщение, второй — нет. Я ожидал, что TypeScript не даст мне даже сравнивать number и string без явного приведения, но код компилируется. Почему так происходит? Разве TypeScript не должен выдавать ошибку на a == b? Или это особенность работы строгой типизации только на уровне компиляции, а в рантайме все равно используется JS-логика?
Пробовал включать strict: true в tsconfig.json — поведение не изменилось. Может, есть какой-то флаг, который запрещает нестрогие сравнения? Буду благодарен за развернутое объяснение и ссылки на документацию.