初心者のための TypeScript インターフェース入門

TypeScript インターフェースは、オブジェクトの構造を定義して、特定の形状要件に準拠できるようにする強力な機能です。このガイドでは、TypeScript インターフェースの基本と、それらを効果的に定義して使用する方法を紹介します。

インターフェースとは何ですか?

TypeScript のインターフェースは、オブジェクトの形状を記述する方法です。これにより、オブジェクトに必要なプロパティとメソッド、およびその型を定義できます。インターフェースは、コードの一貫性と明確さを強化するのに役立ちます。

インターフェースの定義

インターフェースを定義するには、interface キーワードに続けてインターフェース名とオブジェクトの形状を指定します。

interface Person {
  name: string;
  age: number;
}

この例では、Person インターフェイスは、Person オブジェクトに string 型の namenumber 型の age が必要であることを指定しています。

インターフェースの使用

インターフェースを定義したら、それを使用してオブジェクト、関数のパラメータ、戻り値の型チェックを行うことができます。これにより、オブジェクトが定義された形状に準拠していることが保証されます。

オブジェクトとのインターフェースの使用

Person インターフェースを使用してオブジェクトの型チェックを行う方法は次のとおりです。

const person: Person = {
  name: "Alice",
  age: 30
};

この例では、person オブジェクトは Person インターフェイスに準拠しており、正しい型の nameage の両方を持っていることが保証されます。

関数でのインターフェースの使用

インターフェースは関数のパラメータと戻り値の型チェックにも使用できます。

function greet(person: Person): string {
  return `Hello, ${person.name}!`;
}

この例では、greet 関数は Person 型のパラメータを受け入れ、挨拶メッセージを返します。

オプションのプロパティ

インターフェースには、? 修飾子を使用してオプションのプロパティを含めることができます。これは、プロパティが存在する場合と存在しない場合があることを示します。

interface Person {
  name: string;
  age: number;
  email?: string;
}

この例では、email はオプションのプロパティであり、Person オブジェクトに含まれる場合と含まれない場合があります。

読み取り専用プロパティ

プロパティを読み取り専用として定義することもできます。つまり、初期化後に変更することはできません。

interface Person {
  readonly name: string;
  age: number;
}

この例では、name プロパティは読み取り専用であり、一度設定すると変更できません。

インターフェースの拡張

インターフェースは他のインターフェースを拡張できるため、既存の形状に基づいて構築できます。

interface Employee extends Person {
  employeeId: number;
}

この例では、Employee インターフェイスは Person インターフェイスを拡張し、employeeId プロパティを追加します。

結論

TypeScript インターフェースは、コード内のオブジェクトの形状を定義および適用するための基本的な機能です。インターフェースを使用することで、一貫性を確保し、コードの読みやすさを向上させ、TypeScript の強力な型チェック機能を活用できます。より堅牢で保守しやすいコードを作成するには、TypeScript プロジェクトにインターフェースを組み込み始めましょう。