NestJS의 컨트롤러는 최대한 얇게 유지하고, 비즈니스 로직·상태 관리·초기화 작업은 서비스 레이어에 두는 것이 좋다. 이번 포스트에서는 앞서 살펴본 RequestController
예제를 서비스 레이어로 옮기고, TypeScript의 핵심 문법과 NestJS의 라이프사이클 훅을 활용해 깔끔하게 구조화하는 방법을 단계별로 살펴보자
클래스 멤버(필드·메서드)에 사용할 수 있는 네 가지 키워드는 코드 가독성과 캡슐화를 위해 매우 중요하다.
public
public
이 적용됩니다.public name: string; // 또는 name: string;
private
private cache: Map<string, Request>;
protected
private
와 같지만 파생 클래스에서는 접근할 수 있습니다.protected repo: RequestRepository;