babelへOptional Chainingが追加される
Optional Chaining
// before const fooInput = myForm.querySelector('input[name=foo]'); const fooValue = fooInput ? fooInput.value : undefined; // after const fooValue = myForm.querySelector('input[name=foo]')?.value; const obj = { foo: { bar: { baz: 42 } } }; obj?.foo?.bar?.baz; // 42 obj?.qux?.baz; // undefined obj?.foo.bar.qux?.(); // undefined function test() { return 42; } test?.(); // 42 exists?.(); // undefined class Test { } new Test?.(); // test instance new exists?.(); // undefined
?.
演算子の左の式の評価がundefined
または null
のときに右の式が評価されず、undefined
を返します。
現在のステータスはstage-1です。
Babylon
babylonへOptional Chainingの追加と?.
のトークンタイプが追加されました。
babylonとは、Babelのために作られたJSのパーサで、acornがベースで作られています。
github.com
Babel
github.com
現在レビュー中です。
またこのPRのマージ先は 7.0.0
なので少し待たないといけないかもです。(現在 alpha.12
)
このPRでできるbabel-plugin-syntax-optional-chaining
というパッケージが後ほど babel-preset-stage-1
へ入ると思います。