TypeScript 名前空間の操作

TypeScript 名前空間は、単一のグローバル スコープ内でコードを整理および管理する方法を提供します。名前空間は、関連するコードをグループ化し、名前の競合を防ぎ、コードの保守性を向上させるのに役立ちます。このガイドでは、例を挙げて TypeScript 名前空間の作成と使用の基本について説明します。

TypeScript 名前空間とは何ですか?

名前空間は、TypeScript でコードをカプセル化する方法です。関連する関数、クラス、変数を 1 つの論理単位にグループ化できるため、大規模なプロジェクトで名前の衝突を回避し、コードの構成を改善するのに役立ちます。

名前空間の作成

名前空間を作成するには、namespace キーワードに続いて名前とコード ブロックを使用します。名前空間ブロック内で、その名前空間の一部となる関数、クラス、または変数を定義します。

// mathUtils.ts

namespace MathUtils {
  export function add(a: number, b: number): number {
    return a + b;
  }

  export function subtract(a: number, b: number): number {
    return a - b;
  }
}

この例では、MathUtils 名前空間に addsubtract という 2 つの関数が含まれており、どちらも名前空間外で使用するためにエクスポートされています。

名前空間の使用

名前空間内でコードを使用するには、名前空間名のプレフィックスを付け、その後にドットとメンバー名を続けます。名前空間が使用されているスコープ内で使用可能であることを確認します。

// app.ts

/// <reference path="mathUtils.ts" /> 

const sum = MathUtils.add(5, 3);
const difference = MathUtils.subtract(5, 3);

console.log(`Sum: ${sum}`);
console.log(`Difference: ${difference}`);

この例では、MathUtils 名前空間は、3 つのスラッシュ ディレクティブ '<reference path="mathUtils.ts" />' を使用して参照され、app.ts ファイル内のその関数にアクセスできるようになります。

ネストされた名前空間

名前空間は他の名前空間内にネストすることができ、これによりコードをさらに整理しやすくなります。ネストされた名前空間には、名前空間名をドットで連結することでアクセスします。

// shapes.ts

namespace Shapes {
  export namespace Circle {
    export function area(radius: number): number {
      return Math.PI * radius * radius;
    }
  }

  export namespace Square {
    export function area(side: number): number {
      return side * side;
    }
  }
}

この例では、Shapes 名前空間に、CircleSquare という 2 つのネストされた名前空間が含まれており、それぞれに独自の area 関数があります。

ネストされた名前空間の使用

ネストされた名前空間のメンバーにアクセスするには、ドット表記を使用して名前空間名を連結します。

// app.ts

/// <reference path="shapes.ts" /> 

const circleArea = Shapes.Circle.area(5);
const squareArea = Shapes.Square.area(4);

console.log(`Circle Area: ${circleArea}`);
console.log(`Square Area: ${squareArea}`);

この例では、Circle および Square 名前空間が Shapes 名前空間を介してアクセスされ、ネストされた名前空間がどのように利用されるかを示しています。

結論

TypeScript の名前空間は、コードを整理および管理するための強力なツールです。名前空間を使用すると、コードを論理的にグループ化できるため、名前の競合のリスクが軽減され、保守性が向上します。ネストされた名前空間を含む名前空間の作成方法と使用方法を理解することは、効果的な TypeScript 開発に不可欠です。