TypeScript - モジュール:ビギナーズガイド
こんにちは、将来のプログラマーさん!今日は、TypeScriptのモジュールの世界に興味深い旅に出発します。プログラミングが新しい方でも心配しないでください。私はあなたの親切なガイドとして、すべてをステップバイステップで説明します。それでは、さあ始めましょう!
モジュールとは?
本題に入る前に、まずモジュールとは何かを理解しましょう。巨大なレゴの構造を建てていると想像してください。一度にすべてを作成するのではなく、小さな部分を個別に作成してから組み合わせるでしょう。プログラミングにおけるモジュールもまさに同じことをしています!
モジュールは、コードを管理しやすい、再利用可能なチャンクに整理してくれます。コードを複数のファイルに分割することで、メンテナンスと理解を容易にします。TypeScriptには、内部モジュールと外部モジュールの2つの種類があります。
内部モジュール
内部モジュール、別名ネームスペースは、TypeScriptがコードを整理するもととなる方法でした。今は珍しいですが、理解するのは役立ちます。
内部モジュールの作成
まず、最初の内部モジュールを作成してみましょう:
namespace MathOperations {
export function add(x: number, y: number): number {
return x + y;
}
export function subtract(x: number, y: number): number {
return x - y;
}
}
console.log(MathOperations.add(5, 3)); // 出力: 8
console.log(MathOperations.subtract(10, 4)); // 出力: 6
この例では、MathOperations
というネームスペースを作成し、その中にadd
とsubtract
という2つの関数を定義しています。export
キーワードを使うことで、これらの関数をネームスペースの外からアクセス可能にします。
内部モジュールの使用
ネームスペース内の関数を使用するには、ネームスペース名を接頭辞として追加します:
let sum = MathOperations.add(10, 20);
console.log(sum); // 出力: 30
ネストされたネームスペース
ネームスペースを他のネームスペース内にネストすることもできます:
namespace Geometry {
export namespace Circle {
export function calculateArea(radius: number): number {
return Math.PI * radius * radius;
}
}
}
console.log(Geometry.Circle.calculateArea(5)); // 出力: 78.53981633974483
ここでは、Circle
ネームスペースがGeometry
ネームスペース内にネストされています。
外部モジュール
外部モジュールは、TypeScriptのコードを整理するためのより現代的で推奨される方法で、ECMAScript 2015(ES6)モジュールに準拠しています。
外部モジュールの作成
まず、mathOperations.ts
というファイルを作成しましょう:
// mathOperations.ts
export function add(x: number, y: number): number {
return x + y;
}
export function multiply(x: number, y: number): number {
return x * y;
}
このファイルでは、add
とmultiply
という2つの関数をエクスポートしています。
外部モジュールのインポートと使用
次に、これらの関数を使用するための別のファイルを作成しましょう:
// app.ts
import { add, multiply } from './mathOperations';
console.log(add(5, 3)); // 出力: 8
console.log(multiply(4, 2)); // 出力: 8
ここでは、mathOperations
モジュールから特定の関数をインポートしています。
デフォルトエクスポート
時々、モジュールから単一の主要なものをエクスポートしたい場合があります。その際はデフォルトエクスポートを使用します:
// greet.ts
export default function greet(name: string): string {
return `Hello, ${name}!`;
}
デフォルトエクスポートをインポートするには:
// app.ts
import greet from './greet';
console.log(greet('Alice')); // 出力: Hello, Alice!
インポートのリネーム
インポートをリネームすることもできます。名前の衝突を避けるために役立ちます:
import { add as sum } from './mathOperations';
console.log(sum(5, 3)); // 出力: 8
モジュールを使う理由
- 組織化:モジュールはコードを整理し、メンテナンスを容易にします。
- カプセル化:コードの複雑さを隠す方法を提供します。
- 再利用性:コードをアプリの異なる部分で簡単に再利用できます。
- ネームスペース:コード内での名前の衝突を避けるのに役立ちます。
モジュール解決戦略
TypeScriptは、モジュールを解決するための異なる戦略を使用します:
戦略 | 説明 |
---|---|
クラシック | シンプルなアルゴリズムを使用してモジュールを見つけます |
ノード | Node.jsのモジュール解決メカニズムを模倣します |
パスマッピング | TypeScriptがインポートをどのように解決するかを指定します |
結論
おめでとうございます!TypeScriptのモジュールの世界への最初の一歩を踏み出しました。自転車に乗るのと同じで、最初は少し揺れうるかもしれませんが、練習を重ねることですぐにスムーズになります。
モジュールは、あなたのプログラミングツールキットにおける強力なツールです。クリーンで整理された、再利用可能なコードを書くのに役立ちます。TypeScriptの旅を続ける中で、ますますモジュールを使用するようになるでしょう。
codingを続け、学び続け、最も重要なのは、楽しむことです!誰もが次の素晴らしいアプリがモジュールから生まれるかもしれません。ハッピーコーディング!
Credits: Image by storyset