Functional
optional chaining: 値がない処理を連鎖で止める
?. は null または undefined に到達した時点で評価を止め、undefined を返します。
SourceoptionalChaining.ts
Node.js 22
export type Member = { profile?: { nickname?: string } };
export function nicknameOf(member: Member | undefined): string | undefined {
return member?.profile?.nickname;
}TestoptionalChaining.test.ts
Node.js 22
import assert from "node:assert/strict";
import test from "node:test";
import { nicknameOf } from "../../src/nullable/optionalChaining.js";
test("optional chainingは途中のundefinedで評価を止める", () => {
assert.equal(nicknameOf({ profile: { nickname: "ada" } }), "ada");
assert.equal(nicknameOf({}), undefined);
assert.equal(nicknameOf(undefined), undefined);
});01Assertion
このテストで確認できること
- 存在するネストした値を取得できる
- 途中の値が undefined なら例外を出さず undefined を返す
Optional の map/flatMap に近い安全な連鎖は ?. で表せます。最終的な既定値が必要なら ?? を組み合わせます。
OBSERVED RESULT
expected: nicknameOf({profile: undefined}) → undefined
actual: undefined