[typescript] 타입스크립트와 Nest.js의 의존성 주입

의존성 주입은 모듈 간의 의존성을 제거하고 코드를 테스트하거나 재사용하기 쉽게 만드는데 도움을 준다. 이번 글에서는 타입스크립트와 Nest.js에서의 의존성 주입을 살펴볼 것이다.

타입스크립트에서 의존성 주입

의존성 주입은 타입스크립트에서 다음과 같이 사용될 수 있다.

class UserService {
  getUsers() {
    // 사용자 정보를 가져오는 코드
  }
}

class UserController {
  private userService: UserService;

  constructor(userService: UserService) {
    this.userService = userService;
  }

  getAllUsers() {
    return this.userService.getUsers();
  }
}

위의 예제에서 UserControllerUserService에 의존하고 있다. 의존성 주입을 통해 UserController는 이 의존성을 외부에서 주입받기 때문에 더 유연하고 테스트하기 쉬운 코드가 된다.

Nest.js에서 의존성 주입

Nest.js는 의존성 주입을 위해 @Injectable() 데코레이터를 제공한다.

@Injectable()
class UserService {
  getUsers() {
    // 사용자 정보를 가져오는 코드
  }
}

@Controller('users')
class UserController {
  constructor(private readonly userService: UserService) {}

  @Get()
  getAllUsers() {
    return this.userService.getUsers();
  }
}

위의 예제에서 @Injectable() 데코레이터를 사용하여 UserService를 주입 가능한 서비스로 만들었다. 그리고 UserController에서 이를 생성자를 통해 주입받아 사용하였다.

Nest.js는 애플리케이션의 구조를 가지고 있기 때문에 의존성 주입을 통해 모듈 및 컴포넌트 간에 강력한 결합을 방지하고 더 모듈화된 코드를 작성할 수 있다.

의존성 주입은 더 유연하고 테스트하기 쉬운 코드를 작성하는데 도움을 주기 때문에, 타입스크립트와 Nest.js에서는 이를 적극 활용하는 것이 좋다.

참고 자료