Nonchalantly Perusing Magazines

    babel-plugin-transform-optional-chaining

    7.0.0-beta.3 • Public • Published

    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-transform-optional-chaining

    Usage

    Via .babelrc (Recommended)

    .babelrc

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

    Via CLI

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

    Via Node API

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

    References

    Keywords

    Install

    npm i babel-plugin-transform-optional-chaining

    DownloadsWeekly Downloads

    1,450

    Version

    7.0.0-beta.3

    License

    MIT

    Last publish

    Collaborators

    • hzoo
    • loganfsmyth
    • existentialism