「import の別名」とは何か(まずイメージから)
import の別名 は、
「他のファイルから持ってきた名前に、今のファイルで使いやすい別の名前を付け直す」 仕組みです。
- 同じ名前が他でも使われていて衝突しそうなとき
- もっと分かりやすい名前にしたいとき
- ライブラリ側の名前を、プロジェクトの命名ルールに合わせたいとき
に使います。
キーワードは as です。
import { add as plus } from "./math.js";
JavaScriptmath.js では add という名前で export されていますが、
このファイルの中では plus という名前で使えるようになります。
名前付き import に別名をつける(基本パターン)
基本形:import { 元の名前 as 新しい名前 } from “…”
名前付き export を別名で import するときの形はこれです。
// math.js
export function add(a, b) {
return a + b;
}
export function sub(a, b) {
return a - b;
}
JavaScript// main.js
import { add as plus, sub as minus } from "./math.js";
console.log(plus(2, 3)); // 5
console.log(minus(5, 2)); // 3
JavaScriptここが重要です。as の左側(add, sub)はモジュール側で export されている「本来の名前」。
右側(plus, minus)は「このファイルで使う名前」です。
元のモジュールに影響は一切なく、
「このファイルから見た呼び名」を変えているだけ、というイメージでOKです。
名前が衝突するときに避けるための別名
例えば、2つのモジュールから format という関数を import したいとします。
// dateFormat.js
export function format(date) { /* 日付の整形 */ }
// numberFormat.js
export function format(num) { /* 数値の整形 */ }
JavaScript同じファイルでそのまま import すると名前がかぶってしまいます。
// NG(エラーになる)
import { format } from "./dateFormat.js";
import { format } from "./numberFormat.js";
JavaScriptなので、別名を付けます。
// OK
import { format as formatDate } from "./dateFormat.js";
import { format as formatNumber } from "./numberFormat.js";
formatDate(new Date());
formatNumber(12345);
JavaScriptここが重要です。
「同じ名前の export を複数のモジュールから使いたいとき、別名がないと成立しない」。as は衝突を避けるための必須テクニックでもあります。
default import と別名の関係
default import 自体は「常に別名」みたいなもの
export default の import は、もともと「好きな名前を付けていい」仕組みなので、
ある意味「毎回別名 import」だと言えます。
// greet.js
export default function greet(name) {
console.log(`Hello, ${name}`);
}
JavaScript// main.js
import greet from "./greet.js"; // greet という名前で使う
import hello from "./greet.js"; // 別のファイルでは hello という名前で使ってもよい
JavaScriptdefault import では {} を使わずに、
いきなり「このファイルでの名前」を書きます。
ここが重要です。
default export は、import 側が自由に名前を付けて OK。
名前付き export は、{ 元 as 先 } で明示的に別名を付ける。
この違いを整理しておくと混乱しません。
default + 名前付きを同時に import して別名を使う
default export と名前付き export が共存している場合もあります。
// user.js
export default class User {
constructor(name) {
this.name = name;
}
}
export function createGuest() {
return new User("Guest");
}
JavaScriptこれを import する側:
// main.js
import U, { createGuest as makeGuest } from "./user.js";
const a = new U("Alice");
const g = makeGuest();
JavaScriptU は default の別名、makeGuest は名前付き export の別名です。
「自分のファイルでしっくりくる名前」を自由に選べます。
名前空間 import と別名(import * as 別名)
まとめてオブジェクトとして受け取るときの別名
import * as 別名 という形を使うと、
「そのモジュールの名前付き export を全部まとめて、1つのオブジェクトとして受け取る」ことができます。
// math.js
export function add(a, b) {
return a + b;
}
export function sub(a, b) {
return a - b;
}
JavaScript// main.js
import * as math from "./math.js";
console.log(math.add(2, 3));
console.log(math.sub(5, 2));
JavaScriptここで math が「別名」です。math.add, math.sub のように、「名前空間」っぽく使えます。
別のファイルでは、違う名前でも構いません。
import * as m from "./math.js";
m.add(1, 2);
JavaScriptここが重要です。import * as 名前 の “名前” も、import 側で自由に決める別名。
「このモジュール一式を何と呼ぶか」を決める感覚に近いです。
「何でわざわざ別名を使うの?」という話(設計の視点)
プロジェクト全体で名前を揃えるために使う
ライブラリ側の名前が、自分たちの命名ルールと合わないこともよくあります。
// ライブラリ側(英語)
export function setUserName() {}
JavaScriptプロジェクトでは「動詞+名詞」ではなく、「名詞+動詞」で統一したい、などのポリシーがあるとします。
そんなとき、import 時に別名にすることで「こちら側の世界」に揃えられます。
// 自分のコード
import { setUserName as userSetName } from "some-lib";
userSetName("Alice");
JavaScriptライブラリを差し替える時にも、import の部分だけ修正すれば、
プロジェクト内の他のコードはそのままにできます。
読みやすさを優先した名称に変える
名前が短すぎる/曖昧すぎる場合もあります。
// lib.js
export function fn(d) { /* ... */ }
JavaScriptこのまま使うと「fn?d?何それ?」になりがちです。
import { fn as formatDate } from "./lib.js";
const result = formatDate(new Date());
JavaScriptここが重要です。
「このファイルで読んだときに、意味が伝わる名前か?」
を基準に、import 時に思い切って別名を付けるのはかなり有効です。
衝突を避けつつ、「どこから来たか」も分かるようにする
例えば、複数のライブラリから似た名前の関数を import するとき。
import { parse as parseUrl } from "url-lib";
import { parse as parseJson } from "json-lib";
JavaScriptこうしておけば、
parseUrl()→ URL のパースparseJson()→ JSON のパース
が一目で分かります。
「もともとどのモジュールの関数だったか」も名前に含めると、
後から読んだときに迷子になりにくいです。
具体的な例で import の別名に慣れる
例1:日付と数値の format を使い分ける
// dateFormat.js
export function format(date) {
return date.toISOString().slice(0, 10);
}
JavaScript// numberFormat.js
export function format(num) {
return num.toLocaleString("ja-JP");
}
JavaScript// main.js
import { format as formatDate } from "./dateFormat.js";
import { format as formatNumber } from "./numberFormat.js";
console.log(formatDate(new Date())); // 2025-12-20 など
console.log(formatNumber(1234567)); // 1,234,567
JavaScript例2:ユーティリティを名前空間+別名でまとめる
// stringUtils.js
export function capitalize(str) { /* ... */ }
export function trimAll(str) { /* ... */ }
JavaScript// main.js
import * as S from "./stringUtils.js";
console.log(S.capitalize("alice"));
console.log(S.trimAll(" hello "));
JavaScript例3:default + 名前付きを別名で扱う
// api.js
export default function request(url, options = {}) {
/* ... */
}
export function buildUrl(path) {
return "https://api.example.com" + path;
}
JavaScript// main.js
import req, { buildUrl as makeUrl } from "./api.js";
const url = makeUrl("/users");
req(url, { method: "GET" });
JavaScriptまとめ
import の別名 の核心は、
「外から来た名前を、そのファイルに合った名前に付け替えられる」 ことです。
押さえておきたいポイントを整理すると:
- 名前付き import では
import { 元 as 別名 }の形で別名を付けられる - 名前が衝突するとき、役割を明確にしたいとき、プロジェクトの命名ルールに合わせたいときに使う
- default import は元々「好きな名前で import できる」ので、常に別名のようなもの
import * as 別名で「モジュール一式」に名前を付けることもできる- 「このファイルを読む人にとって一番わかりやすい名前か?」を基準に別名を付けると、設計として強い
まずは、意図が曖昧な関数名や、名前がかぶりそうな関数を import するときに、as を使ってみてください。
「名前を変えるだけで、こんなにコードが読みやすくなるのか」という感覚が掴めてきます。
