- http://www.ecma-international.org/ecma-262/6.0/#table-40
- http://www.ecma-international.org/ecma-262/6.0/#table-42
// TypeScript の import の挙動
import v from "mod"; // var v = require('mod').default;
import * as ns from "mod"; // var ns = require('mod');
import {x} from "mod"; // var x = require('mod').x;
import {x as v} from "mod"; // var v = require('mod').x;
import "mod"; // require('mod');
// TypeScript の export の挙動
export var v; // module.exports.v = v;
export default function f(){}; // module.exports.default = function f() {};
export default function(){}; // module.exports.default = function() {};
export default 42; // module.exports.default = 42;
export {x}; // module.exports.x = x;
export {v as x}; // module.exports.x = v;
export {x} from "mod"; // module.exports.x = require('mod').x;
export {v as x} from "mod"; // module.exports.x = require('mod').v;
export * from "mod"; // module.exports = require('mod');
// Babel の import の挙動
import v from "mod"; // var x = ((obj) => obj && obj.__esModule ? obj : { default: obj })(require('mod')).default;
import * as ns from "mod"; // var ns = ((obj) => obj && obj.__esModule ? obj : { default: obj /* ... */ })(require('mod')); // /* ... */ では obj の for in && hasOwnProperty で prop をコピー
import {x} from "mod"; // var x = require('mod').x;
import {x as v} from "mod"; // var v = require('mod').x;
import "mod"; // require('mod');
// Babel の export の挙動
export var v; // ?
export default function f(){}; // ?
export default function(){}; // ?
export default 42; // ?
export {x}; // ?
export {v as x}; // ?
export {x} from "mod"; // ?
export {v as x} from "mod"; // ?
export * from "mod"; // ?
https://github.com/nodejs/node-eps/blob/master/002-es6-modules.md#5411-examples
import v from "mod"; // var v = require('mod');
import * as ns from "mod"; // var ns = { get default() { return require('mod'); }, /* ... */ };
import {x} from "mod"; // ???
import {x as v} from "mod"; // ???
import "mod"; // ???