一些有用的插件

babel-plugin-proposal-optional-chaining

babel-plugin-proposal-optional-chaining 用于处理 ?. 操作符, 可参考 Kotlin

示例:

const obj = {
  foo: {
    bar: {
      baz: 42,
    },
  },
};
obj?.foo?.bar?.baz; // 42
obj?.['foo']?.bar?.baz // 42
obj?.foo.bar?.baz; // 42
obj?.qux?.baz; // undefined

也可用于方法调用时判断:

const obj = {
  foo: {
    bar: {
      baz() {
        return 42;
      },
    },
  },
};
obj?.foo?.bar?.baz(); // 42
obj?.qux?.baz(); // undefined
obj?.foo.bar.qux?.(); // undefined
obj?.foo.bar.qux(); // Error: not a function
function test() {
  return 42;
}
test?.(); // 42
exists?.(); // undefined

创建类的实例时:

const obj = {
  foo: {
    bar: {
      baz: class {
      },
    },
  },
};
new obj?.foo?.bar?.baz(); // baz instance
new obj?.qux?.baz(); // undefined
new obj?.foo.bar.qux?.(); // undefined
new obj?.foo.bar.qux(); // Error: not a constructor
class Test {
}
new Test?.(); // test instance
new exists?.(); // undefined

MIT Licensed | Copyright © 2018-present 滇ICP备16006294号

Design by Quanzaiyu | Power by VuePress