export の書き方
export キーワードを使うと、モジュール内の変数、関数、クラスなどを外部に公開できます。エクスポートされた値は、他のモジュールから import で読み込むことができます。
名前付きエクスポート(Named Export)
個別の値に名前を付けてエクスポートする方法です。1つのモジュールから複数の値をエクスポートできます。
// 宣言と同時にエクスポート
export const PI = 3.14159;
export function square(x) {
return x * x;
}
export class Calculator {
add(a, b) {
return a + b;
}
}まとめてエクスポート
宣言とエクスポートを分離することもできます。ファイルの末尾でまとめてエクスポートするパターンがよく使われます。
const PI = 3.14159;
function square(x) {
return x * x;
}
class Calculator {
add(a, b) {
return a + b;
}
}
// まとめてエクスポート
export { PI, square, Calculator };宣言時エクスポート
export を宣言の前に書く。何がエクスポートされるか一目でわかる。
まとめてエクスポート
ファイル末尾で一覧化。全体の公開 API を把握しやすい。
デフォルトエクスポート(Default Export)
モジュールのメインとなる値を1つだけエクスポートする方法です。1つのモジュールにつき1つだけ指定できます。
// 関数をデフォルトエクスポート
export default function greet(name) {
return `Hello, ${name}!`;
}// クラスをデフォルトエクスポート
export default class User {
constructor(name) {
this.name = name;
}
}無名関数や無名クラスもデフォルトエクスポートできます。
export default function(x) {
return x * 2;
}名前付きとデフォルトの併用
1つのモジュールで、名前付きエクスポートとデフォルトエクスポートを併用することもできます。
// utils.js
export const VERSION = "1.0.0";
export function helper() {
// ...
}
export default function main() {
// メイン処理
}変数のエクスポート
let や const で宣言した変数もエクスポートできます。
export let count = 0;
export const config = {
debug: true,
version: "1.0"
};ただし、エクスポートされた変数を外部から直接書き換えることはできません。変更が必要な場合は、関数を通じて行います。
// counter.js
export let count = 0;
export function increment() {
count++;
}
export function getCount() {
return count;
}エクスポートの注意点
エクスポートはトップレベルのみ
関数内や if 文の中からはエクスポートできません。モジュールのトップレベルでのみ使用できます。
同じ名前は一度だけ
同じ名前を複数回エクスポートすることはできません。
// エラーになる例
function setup() {
export const value = 1; // SyntaxError
}
if (condition) {
export const data = {}; // SyntaxError
}エクスポートの書き方を理解することで、適切にモジュールの公開 API を設計できるようになります。