JSPM

  • Created
  • Published
  • Downloads 36764628
  • Score
    100M100P100Q270404F
  • License MIT

Compile ES2015 computed properties to ES5

Package Exports

  • @babel/plugin-transform-computed-properties

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@babel/plugin-transform-computed-properties) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

@babel/plugin-transform-computed-properties

Compile ES2015 computed properties to ES5

Example

In

var obj = {
  ["x" + foo]: "heh",
  ["y" + bar]: "noo",
  foo: "foo",
  bar: "bar"
};

Out

var _obj;

function _defineProperty(obj, key, value) {
  if (key in obj) {
    Object.defineProperty(obj, key, {
      value: value,
      enumerable: true,
      configurable: true,
      writable: true
    });
  } else {
    obj[key] = value;
  }

  return obj;
}

var obj = (
  _obj = {},
  _defineProperty(_obj, "x" + foo, "heh"),
  _defineProperty(_obj, "y" + bar, "noo"),
  _defineProperty(_obj, "foo", "foo"),
  _defineProperty(_obj, "bar", "bar"),
  _obj
);

Installation

npm install --save-dev @babel/plugin-transform-computed-properties

Usage

.babelrc

Without options:

{
  "plugins": ["@babel/plugin-transform-computed-properties"]
}

With options:

{
  "plugins": [
    ["@babel/plugin-transform-computed-properties", {
      "loose": true
    }]
  ]
}

Via CLI

babel --plugins @babel/plugin-transform-computed-properties script.js

Via Node API

require("@babel/core").transform("code", {
  plugins: ["@babel/plugin-transform-computed-properties"]
});

Options

loose

boolean, defaults to false

Just like method assignment in classes, in loose mode, computed property names use simple assignments instead of being defined. This is unlikely to be an issue in production code.

Example

In

var obj = {
  ["x" + foo]: "heh",
  ["y" + bar]: "noo",
  foo: "foo",
  bar: "bar"
};

Out

var _obj;

var obj = (
  _obj = {},
  _obj["x" + foo] = "heh",
  _obj["y" + bar] = "noo",
  _obj.foo = "foo",
  _obj.bar = "bar",
  _obj
);