Some JavaScript implementations allow undefined to be overwritten, this may lead to peculiar bugs that are extremely hard to track down.
This plugin transforms undefined
into void 0
which returns undefined regardless of if it's been reassigned.
In
foo === undefined;
Out
foo === void 0;
npm install babel-plugin-transform-undefined-to-void --save-dev
.babelrc
{
"plugins": ["transform-undefined-to-void"]
}
babel --plugins transform-undefined-to-void script.js
require("@babel/core").transform("code", {
plugins: ["transform-undefined-to-void"]
});