ES Modules
import, export がトップレベルにあればモジュールとして扱われる。そうでない場合はスクリプトとして扱われる。
モジュールは変数や型がスコープ内に収まるが、スクリプトはグローバルになる。
CommonJS は
module.exports = { key: 'value' } といった形式でエクスポート
const { key } = require('aboveExport') といった形式でインポートする。
CommonJSは関数をエクスポートできるのが大きな違い。
TypeScript は import, require を基にして依存解決する。