🧩 TypeScript:インターフェースとクラスの分割定義

✅ ファイル構成例

src/
├── interfaces/
│   └── PersonInterface.ts   ← インターフェース定義
├── classes/
│   └── Person.ts            ← 実装クラス
└── main.ts                  ← 使用例

📄 PersonInterface.ts(インターフェース定義)

// src/interfaces/PersonInterface.ts

export interface PersonInterface {
  name: string;
  age: number;
  greet(): void;
}

📄 Person.ts(インターフェースを実装)

// src/classes/Person.ts

import { PersonInterface } from '../interfaces/PersonInterface';

export class Person implements PersonInterface {
  name: string;
  age: number;

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  greet(): void {
    console.log(`こんにちは、${this.name} (${this.age}歳)`);
  }
}

📄 main.ts(使用例)

// src/main.ts

import { Person } from './classes/Person';

const kenji = new Person("Kenji", 46);
kenji.greet(); // → こんにちは、Kenji (46歳)

💡 インターフェースを使うメリット

利点内容
コードの構造が明確になる 必須のプロパティ・メソッドを明示できる
型のチェックが効く ミスや未実装をコンパイル時に発見できる
拡張しやすい設計 ルールに基づいた安全なクラス設計ができる

このように、インターフェースとクラスをファイルごとに分けることで、TypeScript のコードはより整理され、保守しやすくなります。