0. 서론


NestJS의 컨트롤러는 최대한 얇게 유지하고, 비즈니스 로직·상태 관리·초기화 작업은 서비스 레이어에 두는 것이 좋다. 이번 포스트에서는 앞서 살펴본 RequestController 예제를 서비스 레이어로 옮기고, TypeScript의 핵심 문법과 NestJS의 라이프사이클 훅을 활용해 깔끔하게 구조화하는 방법을 단계별로 살펴보자

1. TypeScript 접근제한자(Access Modifiers)


클래스 멤버(필드·메서드)에 사용할 수 있는 네 가지 키워드는 코드 가독성과 캡슐화를 위해 매우 중요하다.

1-1) public

public name: string;  // 또는 name: string;

1-2) private

private cache: Map<string, Request>;

1-3) protected

protected repo: RequestRepository;