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
ã¸å
¥ãã¨æãã¾ãã