名前付きエクスポートの別名(as)
as キーワードを使うと、エクスポートやインポート時に名前を変更できます。名前の衝突を避けたり、より分かりやすい名前に変えたりする際に便利です。
インポート時の別名
import 文で as を使うと、インポートする値に別の名前を付けられます。
// math.js
export function add(a, b) {
return a + b;
}
export const PI = 3.14159;// main.js
import { add as sum, PI as pi } from './math.js';
console.log(sum(2, 3)); // 5
console.log(pi); // 3.14159元の名前(add, PI)ではなく、新しい名前(sum, pi)で使用します。
名前の衝突を解決
同じ名前の関数を複数のモジュールからインポートする場合、as で別名を付けて衝突を回避できます。
// stringUtils.js
export function format(str) {
return str.trim().toLowerCase();
}
// dateUtils.js
export function format(date) {
return date.toISOString();
}// main.js
import { format as formatString } from './stringUtils.js';
import { format as formatDate } from './dateUtils.js';
formatString(" Hello "); // "hello"
formatDate(new Date()); // "2024-03-15T..."エクスポート時の別名
export 文でも as を使って、内部の名前と公開する名前を変えることができます。
// utils.js
function internalHelper() {
// 内部的な名前
}
const privateConfig = {
debug: true
};
// 別名でエクスポート
export {
internalHelper as helper,
privateConfig as config
};// main.js
import { helper, config } from './utils.js';
// internalHelper や privateConfig ではインポートできないデフォルトエクスポートと as
デフォルトエクスポートをまとめてエクスポートする際にも as が使えます。
// utils.js
function main() {
// ...
}
export { main as default };これは export default main; と同じ意味になります。
再エクスポート時の別名
他のモジュールの値を再エクスポートする際にも as で名前を変更できます。
// index.js
export { Button as PrimaryButton } from './Button.js';
export { default as Modal } from './Modal.js';よくある使用パターン
長い名前を短くする
import { createAsyncThunk as createThunk } from 'toolkit' のように、長い名前を短縮して使いやすくします。
より説明的な名前にする
import { fn as calculateTotalPrice } のように、文脈に合った分かりやすい名前に変更します。
// 実際のプロジェクトでの例
import {
createStore as createReduxStore,
combineReducers as combine
} from 'redux';
import {
ref as vueRef,
computed as vueComputed
} from 'vue';注意点
as を多用しすぎると、コードを読む人が混乱する可能性があります。
適切な使用
名前の衝突回避、明らかに分かりやすくなる場合
避けるべき使用
個人的な好みだけで名前を変える、統一性のない別名
チームでコーディング規約を決めて、一貫性を保つことが重要です。