babel-plugin-transform-optional-chaining
Transform optional chaining operators into a series of nil checks
Last updated 5 years ago .
· Repository · Original npm · Tarball · package.json
$ cnpm install babel-plugin-transform-optional-chaining 
SYNC missed versions from official npm registry.

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 intermixed
obj?.foo.bar?.baz; // Only access `foo` if `obj` exists, and `baz` if
                   // `bar` exists

Calling deeply nested functions

const obj = {
  foo: {
    bar: {
      baz() {
        return 42;
      },
    },
  },
};

const baz = obj?.foo?.bar?.baz(); // 42

const safe = obj?.qux?.baz(); // undefined
const safe2 = obj?.foo.bar.qux?.(); // undefined

const willThrow = obj?.foo.bar.qux(); // Error: not a function

// Top function can be called directly, too.
function test() {
  return 42;
}
test?.(); // 42

exists?.(); // undefined

Constructing deeply nested classes

const obj = {
  foo: {
    bar: {
      baz: class {
      },
    },
  },
};

const baz = new obj?.foo?.bar?.baz(); // baz instance

const safe = new obj?.qux?.baz(); // undefined
const safe2 = new obj?.foo.bar.qux?.(); // undefined

const willThrow = new obj?.foo.bar.qux(); // Error: not a constructor

// Top classes can be called directly, too.
class Test {
}
new Test?.(); // test instance

new exists?.(); // undefined

Installation

npm install --save-dev babel-plugin-syntax-optional-chaining

Usage

Via .babelrc (Recommended)

.babelrc

{
  "plugins": ["syntax-optional-chaining"]
}

Via CLI

babel --plugins syntax-optional-chaining script.js

Via Node API

require("babel-core").transform("code", {
  plugins: ["syntax-optional-chaining"]
});

References

Current Tags

  • 7.0.0-beta.3                                ...           latest (5 years ago)
  • 7.0.0-beta.3                                ...           next (5 years ago)

13 Versions

  • 7.0.0-beta.3                                ...           5 years ago
  • 7.0.0-beta.2                                ...           5 years ago
  • 7.0.0-beta.1                                ...           5 years ago
  • 7.0.0-beta.0                                ...           5 years ago
  • 7.0.0-alpha.20                                ...           5 years ago
  • 7.0.0-alpha.19                                ...           5 years ago
  • 7.0.0-alpha.18                                ...           6 years ago
  • 7.0.0-alpha.17                                ...           6 years ago
  • 7.0.0-alpha.16                                ...           6 years ago
  • 7.0.0-alpha.15                                ...           6 years ago
  • 7.0.0-alpha.14                                ...           6 years ago
  • 7.0.0-alpha.13.1                                ...           6 years ago
  • 7.0.0-alpha.13                                ...           6 years ago
Dependencies (1)
Dev Dependencies (1)

Copyright © npmmirror.com | 浙ICP备15033595号-63 |