babel-plugin-transform-optional-chaining
The Optional Chaining Operator allows you to handle properties of deeply nested objects without worrying about undefined intermediate objects.
Example
Accessing deeply nested properties
const obj = foo: bar: baz: 42 ; const baz = obj?foo?bar?baz; // 42 const safe = obj?qux?baz; // undefined // Optional chaining and normal chaining can be intermixedobj?foobar?baz; // Only access `foo` if `obj` exists, and `baz` if // `bar` exists
Calling deeply nested functions
const obj = foo: bar: { return 42; } ; const baz = obj?foo?bar?; // 42 const safe = obj?qux?; // undefinedconst safe2 = obj?foobarqux?; // undefined const willThrow = obj?foobar; // Error: not a function // Top function can be called directly, too. { return 42;}test?; // 42 exists?; // undefined
Constructing deeply nested classes
const obj = foo: bar: baz: class ; const baz = ?foo?bar?; // baz instance const safe = ?qux?; // undefinedconst safe2 = ?foobarqux?; // undefined const willThrow = ?foobar; // Error: not a constructor // Top classes can be called directly, too. ?; // test instance ?; // undefined
Installation
npm install --save-dev babel-plugin-transform-optional-chaining
Usage
.babelrc
(Recommended)
Via .babelrc
Via CLI
babel --plugins transform-optional-chaining script.js
Via Node API
;