src/
├── interfaces/
│ └── PersonInterface.ts ← インターフェース定義
├── classes/
│ └── Person.ts ← 実装クラス
└── main.ts ← 使用例
// src/interfaces/PersonInterface.ts
export interface PersonInterface {
name: string;
age: number;
greet(): void;
}
// 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}歳)`);
}
}
// src/main.ts
import { Person } from './classes/Person';
const kenji = new Person("Kenji", 46);
kenji.greet(); // → こんにちは、Kenji (46歳)
利点 | 内容 |
---|---|
コードの構造が明確になる | 必須のプロパティ・メソッドを明示できる |
型のチェックが効く | ミスや未実装をコンパイル時に発見できる |
拡張しやすい設計 | ルールに基づいた安全なクラス設計ができる |
このように、インターフェースとクラスをファイルごとに分けることで、TypeScript のコードはより整理され、保守しやすくなります。