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
Via .babelrc
(Recommended)
.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
);