Language
object: 同じプロパティでも === は別の参照なら false
オブジェクトの === は値の形ではなく、同じオブジェクトへの参照かどうかを比較します。
SourcepointValues.ts
Node.js 22
export type Point = Readonly<{ x: number; y: number }>;
export function samePoint(left: Point, right: Point): boolean {
return left.x === right.x && left.y === right.y;
}TestpointValues.test.ts
Node.js 22
import assert from "node:assert/strict";
import test from "node:test";
import { samePoint } from "../../src/object/pointValues.js";
test("同じ座標を持つ別オブジェクトは===で等しくない", () => {
const left = { x: 1, y: 2 };
const right = { x: 1, y: 2 };
assert.equal(left === right, false);
assert.equal(samePoint(left, right), true);
});01Assertion
このテストで確認できること
- 同じプロパティを持つ別オブジェクトは === で false になる
- 値比較が必要なら比較関数を明示する
TypeScript の interface は実行時の equals を生成しません。値オブジェクトの比較規則を、関数またはドメイン API として定義します。
OBSERVED RESULT
expected: {x: 1, y: 2} === {x: 1, y: 2} → false
actual: false