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は、アプリケーションのロジックを整理し、コードの再利用を促進します。