Closed3

Ruby のぼっち演算子と TypeScript のオプショナルチェイニング

ckonackona

TypeScript の場合

const hoge: {a: string | undefined} = {a: undefined}

// undefined
hoge.a

// undefined
hoge.a?.length

// undefined (☆)
hoge.a?.length.toString

// Object is possibly 'undefined'.
hoge.a.length
ckonackona

Ruby の場合

# nil
nil&.hoge

# nil
nil&.hoge&.fuga

# NoMethodError (☆)
nil&.hoge.fuga
ckonackona

TypeScript の場合、 undefined になったときそれ以降の処理がすべて飛ばされる。
ので、 ?. は最初に undefined になる可能性のあるところだけで良い。

Ruby の場合はそのような動きはしないので nil になりえる箇所すべてで & 演算子を使う必要がある。

このスクラップは2022/05/11にクローズされました