Language
== と ===: 暗黙変換の有無が異なる
== は比較前に型変換を行い、=== は型と値の両方を比較します。
SourcecoerciveEquality.ts
Node.js 22
export const compareZeroAndEmpty = () => {
const zero: unknown = 0;
const empty: unknown = '';
return { loose: zero == empty, strict: zero === empty };
};TestcoerciveEquality.test.ts
Node.js 22
import assert from 'node:assert/strict';
import test from 'node:test';
import { compareZeroAndEmpty } from '../../src/equality/coerciveEquality.js';
test('== は比較前に空文字を数値へ変換するが、=== は型が異なればfalseになる', () => {
assert.deepEqual(compareZeroAndEmpty(), { loose: true, strict: false });
});01Assertion
このテストで確認できること
- 0 == "" はtrueになる
- 0 === "" はfalseになる
意図しない型変換を避けるため、通常は===を使います。
OBSERVED RESULT
0 == "" → true
0 === "" → false