「シグネチャ」と「インターフェイス」は、特にTypeScriptの文脈で考えると、関連性がありますが、異なる概念です。
以下に、それぞれの違いを簡潔に説明します。
シグネチャ
これは、あるオブジェクトのプロパティ(属性やメンバー変数とも呼ばれる)が持つべきデータ型を指定するものです。
例
name: string;
は、nameというプロパティが文字列型(string)であることを示すシグネチャです。
インターフェイス
インターフェイスは、オブジェクトやクラスが持つべきプロパティやメソッドの集合体を定義するものです。
この定義内には、それぞれのプロパティやメソッドのシグネチャが含まれます。
interface IPerson {
name: string;
age: number;
greet(): void;
}
このIPersonインターフェイスは、nameという文字列型のプロパティ、ageという数値型のプロパティ、そしてgreetという戻り値がvoidのメソッドを持つことを定義しています。
-
interface
- TypeScript で新しいインターフェースを定義するためのキーワードです。
-
IPerson
- インターフェースの名前です。
I
で始まる命名は、一般的にインターフェースを示す慣習として使用されることがあります。
- インターフェースの名前です。
結論
プロパティのシグネチャは、特定のプロパティがどのようなデータ型を持つかを示すものです。
インターフェイスは、複数のプロパティやメソッドのシグネチャをまとめた定義のことです。
インターフェイスは、特定のオブジェクトやクラスが持つべき構造や動作を定義するものと考えることができます。
インターフェイスは、プロパティやメソッドのシグネチャの"集合"と考えることができます。一方、プロパティのシグネチャは、その集合の一部、つまり1つの要素に過ぎません。