마냥 NestJS로 프로젝트를 만들면서 처음쓰는 옵션이 많은데, 대부분의 영상강의에서는 이 키워드나 데코레이터를 왜 사용해야하는지 이유도 없이 그냥 이렇게 써라고만 가르쳐준다. 이런 점이 워낙 불편해서 하나하나 정리해 보고 추가해 나아가자
private
NestJS 프로젝트에서 클래스의 멤버 변수를 선언할 때 사용하는 키워드이다. private는 해당 변수가 클래스 내부에서만 접근 가능하다는 것을 나타내며 private 키워드를 사용하면, 해당 변수에 접근할 수 있는 영역을 제한함으로써 클래스의 캡슐화를 유지할 수 있다.
readonly
마찬가지로 클래스의 멤버 변수를 선언할 때 사용하는 키워드이다. readonly는 해당 변수가 선언된 이후에는 변경할 수 없다는 것을 나타내며 이를 통해 변수의 값을 보호하고, 프로그램의 신뢰성을 높일 수 있다. readonly를 사용하면 변수에 대한 읽기 전용 접근을 보장할 수 있으며, 또한 컴파일러가 해당 변수의 값을 변경하려고 할 때 경고를 발생시켜 오류를 방지할 수 있다고한다.
@(데코레이터)
TypeScript의 문법 중 하나로, 클래스와 클래스의 속성, 메서드, 매개변수 등에 부가적인 정보를 제공하기 위해 사용되는 문법이다.
@Injectable()
@Injectable() 데코레이터는 해당 클래스를 NestJS의 Dependency Injection(의존성주입) 시스템에서 사용할 수 있는 Provider로 등록하기 위한 수단이라고 볼 수있다.
@Entity()
BD모델 설정을 위한 TypeORM 데코레이터, @PrimaryGeneratedColumn():기본키 , @Column()컬럼 등 을 정의할 수 있고, Entity로 정의한 클래서에서 레포지토리에 접근하여 CRUD작업을 수행함
DTO
Data Transfer Object의 약자로, 데이터 전송 객체를 의미한다. 클라이언트측 or 프론트엔트측 서버에서 백서버로 보낼 데이터의 구성을 나타내는 것이라고 볼 수 있다. 어떠한 데이터를 구성하고 보내고 받을 것인지 서로 협의하고 만들거나, 추가적인 내용이 필요하거나 불필요할 때에는 조율이 필요하다.