Functional
?? と ||: 0 や空文字を既定値扱いするかが異なる
|| は falsy な値すべてを置き換えますが、?? は null と undefined だけを置き換えます。
SourcenullishDefaults.ts
Node.js 22
export function withOr(value: number | undefined): number {
return value || 10;
}
export function withNullish(value: number | undefined): number {
return value ?? 10;
}TestnullishDefaults.test.ts
Node.js 22
import assert from "node:assert/strict";
import test from "node:test";
import { withNullish, withOr } from "../../src/nullable/nullishDefaults.js";
test("ゼロはORでは既定値になるがnullishでは保持される", () => {
assert.equal(withOr(0), 10);
assert.equal(withNullish(0), 0);
assert.equal(withNullish(undefined), 10);
});01Assertion
このテストで確認できること
- 0 || 10 は 10 になる
- 0 ?? 10 は 0 のままになる
数値の 0、空文字、false が正当な値なら、既定値には || ではなく ?? を使います。
OBSERVED RESULT
expected: 0 || 10 → 10
actual: 10
expected: 0 ?? 10 → 0