Equality

Порівняння

Одна річ, на яку потрібно звернути увагу в JavaScript, це різниця між == та ===. Оскільки JavaScript намагається бути стійким до помилок програмування, == намагається автоматично конвертувати типи між двома змінними, наприклад, конвертує рядок в число, щоб ви могли порівняти з числом, як показано нижче:

console.log(5 == "5"); // true   , TS Error
console.log(5 === "5"); // false , TS Error

Однак, вибір, який робить JavaScript, не завжди є ідеальним. Наприклад, у наведеному нижче прикладі перше твердження є хибним, оскільки "" та "0" - це обидва рядки (string) і, очевидно, не є рівними. Однак у другому випадку як 0, так і пустий рядок ("") є ложними значеннями (тобто поводяться як false) і, отже, вони рівні з точки зору ==. У обох випадках твердження є хибними, коли використовується ===.

console.log("" == "0"); // false
console.log(0 == ""); // true

console.log("" === "0"); // false
console.log(0 === ""); // false

Зауважте, що string == number та string === number обидва є помилками на етапі компіляції в TypeScript, тому зазвичай вам не потрібно хвилюватися про це.

Аналогічно до == проти ===, існує також != проти !==.

Тому порада: завжди використовуйте === і !==, за винятком перевірок на значення null, про які ми розповімо пізніше.

Структурне порівняння

Якщо ви хочете порівняти два об'єкти на структурну рівність, оператори ==/=== не є достатніми. Наприклад:

console.log({a:123} == {a:123}); // False
console.log({a:123} === {a:123}); // False

Для здійснення таких перевірок використовуйте пакет npm deep-equal, наприклад:

Однак, досить часто вам не потрібно глибоке порівняння, і все, що вам дійсно потрібно, - це перевірка за допомогою якогось id, наприклад:

Last updated