babel/packages/babel-plugin-transform-es2015-parameters
Logan Smyth 14584c218c Kill the "shadow-functions.js" internal plugin in favor of an explicit helper (#5677)
* Handle arrow function processing via shared API rather than default plugin.

* Fix a few small PR comments.

* Preserve existing spec arrow 'this' rewrites, and support spec in subclass constructors.
2017-05-05 13:27:18 -07:00
..
2017-03-25 21:46:16 -04:00
2017-04-18 10:41:30 -04:00

babel-plugin-transform-es2015-parameters

Compile ES2015 default and rest parameters to ES5

This plugin transforms ES2015 parameters to ES5, this includes:

  • Destructuring parameters
  • Default parameters
  • Rest parameters

Examples

In

function test(x = "hello", { a, b }, ...args) {
  console.log(x, a, b, args);
}

Out

function test() {
  var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "hello";
  var _ref = arguments[1];
  var a = _ref.a,
      b = _ref.b;

  for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
    args[_key - 2] = arguments[_key];
  }

  console.log(x, a, b, args);
}

Installation

npm install --save-dev babel-plugin-transform-es2015-parameters

Caveats

Default parameters desugar into let declarations to retain proper semantics. If this is not supported in your environment then you'll need the transform-block-scoping plugin.

Usage

.babelrc

{
  "plugins": ["transform-es2015-parameters"]
}

Via CLI

babel --plugins transform-es2015-parameters script.js

Via Node API

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