Socket
Socket
Sign inDemoInstall

@babel/plugin-transform-computed-properties

Package Overview
Dependencies
77
Maintainers
4
Versions
75
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @babel/plugin-transform-computed-properties

Compile ES2015 computed properties to ES5


Version published
Weekly downloads
23M
decreased by-0.44%
Maintainers
4
Created
Weekly downloads
 

Package description

What is @babel/plugin-transform-computed-properties?

The @babel/plugin-transform-computed-properties npm package is a plugin for Babel that transforms computed property names in objects. This allows you to use expressions to define property names in your objects, which are evaluated at runtime.

What are @babel/plugin-transform-computed-properties's main functionalities?

Computed Property Names

This feature allows you to use expressions inside square brackets to compute property names for objects. The expression inside the brackets is evaluated and the result is used as the property name.

{"var obj = {['foo' + bar]: 'baz'};"}

Other packages similar to @babel/plugin-transform-computed-properties

Readme

Source

@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
);

Keywords

FAQs

Last updated on 01 Dec 2017

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc