Nest.jsでinterfaceを作成し、型安全性を確保する方法

NestJSでのinterfaceの作成と利用について学びましょう。

概要

NestJSでは、TypeScriptのinterfaceを使用して、コードの型安全性を確保します。interfaceは、特定の形状を持つオブジェクトを表現する強力な方法で、コードの安全性と予測可能性を向上させます。この記事では、NestJSでinterfaceを作成し、型安全性を確保する方法を詳しく解説します。

nest.js v10.1.7
nodejs v19.7.0

また、今回作成するコードは全て、GitHubに掲載しています。

interfaceを作成する方法

NestJSでは、interfaceを作成することで、特定の形状を持つオブジェクトを表現することができます。以下に、Userという名前のinterfaceを作成する例を示します。

/interfaces/user.interface.ts

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

このUser interfaceは、idとnameという2つのプロパティを持つオブジェクトを表現しています。idは数値型、nameは文字列型であることが定義されています。

interfaceを利用する方法

作成したinterfaceは、サービスやコントローラーなど、アプリケーションの各部分で利用することができます。

import { Injectable } from '@nestjs/common';

@Injectable()
export class UsersService {
  private users: User[] = [
    { id: 1, name: 'John' },
    { id: 2, name: 'Jane' },
    { id: 3, name: 'Doe' },
  ];
  getUsers(): User[] {
    return this.users;
  }
  addUser(name: string): void {
    const newUser: User = {
      id: this.users.length + 1,
      name,
    };
    this.users.push(newUser);
  }
  putUser(id: number, name: string): void {
    const index = this.users.findIndex((user) => user.id === Number(id));
    if (index === -1) {
      console.error(`User with id ${id} not found.`);
      return;
    }
    console.log(`Updating user with id ${id} to have name ${name}`);
    this.users[index] = { ...this.users[index], name };
  }
  deleteUser(id: number): void {
    this.users = this.users.filter((user) => user.id !== Number(id));
  }
}

この例では、UsersServiceはUser interfaceを利用して、usersという名前のプライベートプロパティを持っています。usersプロパティはUser型の配列で、各ユーザーはidとnameというプロパティを持つことが保証されています。

まとめ

この記事では、NestJSでinterfaceを作成し、型安全性を確保する方法を学びました。interfaceは、TypeScriptの強力な機能の一つで、コードの安全性と予測可能性を向上させます。NestJSのinterfaceは、アプリケーションのロジックを整理し、コードの再利用を促進します。