본문 바로가기

Backend/NestJS

NestJS에서의 의존성 주입(Dependency Injection)

NestJS로 Service를 작성하던 중에 항상 아래와 같이 작성하는 이유에 대해서 궁금했었다. 

constructor(private aaService : AaService)

 

1. private를 쓰는 이유? 

JS에서는 private,public,protected와 같은 접근제한자를 쓸 수 없다. (이제 알았다..) 

Typescript에서는 위와 같은 접근제한자를 지원하기 때문에 private와 같은 접근제한자를 constructor 내부에서 파라미터로 사용할 수 있다 

2. boardsService : BoardsService 

boardService 파라미터에 BoardService 객체를 타입으로 지정해준다. 

이 boardService 파라미터를 BoardsController 클래스 안에서 사용하기 위해 this.boardService 프로퍼티에 boardsService를 할당해준다. 

 

But 타입스크립트에서는 선언한 값만 객체의 프로퍼티로 사용가능하기 때문에 위에 boardService : BoardService로 선언해준다. 

 

-> 이렇게 선언된 boardService 프로퍼티를 이용해서 BoardsController 클래스 안에서 활용할 수 있는 것이다. 

 

순서를 정리하자면, 

constructor ~ 

this ~ 

boardsService : BoardService ~ 

 

※ 인프런 '따라하면서 배우는 NestJS' 강의를 참고하여 쓴 글입니다.