TypeScript上級

上級 TypeScriptで学ぶマイクロサービス|練習問題編

導入

マイクロサービスアーキテクチャは、近年のソフトウェア開発において重要なトピックとなっています。特に、TypeScriptを使用したマイクロサービスの設計や実装は、型安全性や開発効率を向上させる手段として注目されています。本記事では、実務で遭遇する具体的なシチュエーションをもとに、TypeScriptを活用したマイクロサービスの設計に焦点を当てます。

教科書レベルの解説(マイクロサービス)

重要な概念の整理

マイクロサービスは、独立したサービスを小さな単位で構成し、それぞれが独自の機能を持つアーキテクチャスタイルです。これにより、サービス間の依存性を減少させ、開発チームが異なる技術スタックを採用することが可能になります。特に、TypeScriptを用いることで、型定義に基づいたインターフェース設計が可能になり、APIの整合性を保つことができます。

コード例(TypeScript)


interface User {
    id: number;
    name: string;
    email: string;
}

class UserService {
    private users: User[] = [];

    public createUser(user: User): User {
        this.users.push(user);
        return user;
    }

    public getUserById(id: number): User | undefined {
        return this.users.find(user => user.id === id);
    }
}

コードの行ごとの解説

  1. interface User: ユーザーの型を定義します。ID、名前、メールアドレスを含みます。
  2. class UserService: ユーザー関連の操作を管理するクラスです。
  3. private users: ユーザー情報を保持する配列です。
  4. createUser: 新しいユーザーを作成し、配列に追加します。
  5. getUserById: ユーザーIDに基づいて、特定のユーザーを取得します。

練習問題編

以下の練習問題に取り組み、理解度を確認してください。

  1. 問題 1: UserServiceにユーザーを削除するメソッドを追加してください。

    模範解答:

    
    public deleteUser(id: number): boolean {
        const index = this.users.findIndex(user => user.id === id);
        if (index !== -1) {
            this.users.splice(index, 1);
            return true;
        }
        return false;
    }
    
  2. 問題 2: getUserByIdメソッドに、ユーザーが見つからなかった場合のエラーハンドリングを追加してください。

    模範解答:

    
    public getUserById(id: number): User | undefined {
        const user = this.users.find(user => user.id === id);
        if (!user) {
            throw new Error("User not found");
        }
        return user;
    }
    
  3. 問題 3: ユーザーの配列を取得するメソッドを作成してください。

    模範解答:

    
    public getAllUsers(): User[] {
        return this.users;
    }
    

まとめ

  • TypeScriptを用いたマイクロサービスの設計は、型安全性を提供し、開発効率を向上させます。
  • ユーザー管理の基本的な操作を実装することで、マイクロサービスの機能を理解できるようになります。
  • 練習問題を通じて、実際の業務に即したスキルを身につけることが可能です。