반응형

nestjs 9

[NestJS] [데코레이터] 속성 데코레이터

속성 데코레이터 클래스의 속성 바로 앞에 선언 선언파일 선언클래스에서는 사용하지 못함 특징 두 개의 인수를 가지는 함수이다. 정적 멤버가 속한 클래스의 생성자함수이거나 인스턴스 멤버에 대한 클래스의 프로토타입 멤버의 이름 메서드 데커레이터, 접근자 데커레이터와 비교해 볼 때 속성 설명자가 존재하지않다는 특징이 있음 반환값 무시됨 구현 export class PropertyDecorationTest { @format('Hello') greeting: string; } function format(formatString: string) { return function (target: any, propertyKey: string): any { let value = target[propertyKey]; func..

재학습/NestJS 2023.06.22

[NestJS] [데코레이터] 매개변수 데코레이터

매개변수 데코레이터 생성자 또는 메서드의 매개변수에 선언되어 적용 선언파일 선언클래스에서는 사용될 수 없다 반환값 무시 호출시 3개의 인수와 함께 호출됨 정적멤버가 속한 클래스의 생성자 함수이거나 인스턴스멤버에 대한 클래스의 프로토타입 멤버의 이름 매개변수가 함수에서 몇 번째 위치에 선언되었는지를 나타내는 인덱스 구현 import { BadRequestException } from '@nestjs/common'; export class ParameterDecorationTest { private name: string; @Validate setName(@MinLength(3) name: string) { this.name = name; } } function MinLength(min: number) { ..

재학습/NestJS 2023.06.21

[NestJS] [데코레이터] 접근자 데코레이터

접근자 데코레이터 접근자 바로 앞에 선언 접근자의 속성 설명자에 적용 접근자의 정의를 읽거나 수정할 수 있음 선언파일과 선언클래스에는 사용할 수 없음 반환값은 해당 멤버의 속성 설명자 구현 특정 멤버가 열거가 가능한지 결정하는 데코레이터 export class AccessorDecorationTest { constructor(private name: string) {} @Enumerable(true) get getName() { return this.getName; } @Enumerable(false) set setName(name: string) { this.name = name; } } function Enumerable(enumerable: boolean) { return function ( tar..

재학습/NestJS 2023.06.20

[NestJS] [데코레이터] 메서드 데코레이터

메서드 데코레이터 메서드 바로 앞에 선언 메서드의 속성 설명자(Property Descriptor)에 적용된다. 메서드의 정의를 읽거나 수정할 수 있다. 선언파일, 오버로드메소드, 선언클래스에는 사용할 수 없다. 메서드속성설명자(Property Descriptor)란? 객체속성의 특성을 기술한다. (속성의 정의를 수정할수있는지 여부, 열거형인지 여부, 속성 값, 수정가능여부, getter, setter) 메서드 데코레이터는, 세 개의 인수를 가진다. target: any, propertyKey: string, descriptor: PropertyDescriptor 정적 멤버가 속한 클래스의 생성자 함수이거나, 인스턴스 멤버에 대한 클래스의 프로토타입 멤버의 이름 멤버의 속성설명자(Property Desc..

재학습/NestJS 2023.06.19

[NestJS] [데코레이터] 클래스 데코레이터

클래스 데코레이터 클래스 바로 앞에 선언 클래스의 생성자에 적용 클래스의 정의를 읽거나 수정 가능 선언파일과 선언클래스내에서는 사용불가능 구현 @reportableClassDecorator export class ClassDecorationTest { type = 'report'; title: string; constructor(t: string) { this.title = t; } } function reportableClassDecorator( constructor: T ) { return class extends constructor { reportingURL = 'http://www.example.com'; }; } 클래스데커레이터는 생성자를 리턴하는 함수다. 결과 reportingURL은 선언해..

재학습/NestJS 2023.06.18

[NestJS] [데코레이터]

데코레이터 개념 횡단관심사를 분리하여 관점지향 프로그래밍을 할 수 있도록 해주는 기능 자바의 애너테이션과 유사함 @키워드를 붙여 사용 DTO검증뿐만아니라 다양한곳에 활용 가능 데코레이터 합성 각 데코레이터 표현은 위에서 아래로 평가된다. 결과는 아래에서 위로 함수로 호출된다. export class DecoCompositionTest { @first() @second() method() { console.log('method is called'); } } function first() { console.log('first() : factory evaluated'); return function ( target: any, propertyKey: string, descriptor: PropertyDescri..

재학습/NestJS 2023.06.17

[NestJS] DTO Validation Check & PartialType

NestJS로도 DTO Validation 체크가 가능하다 CreateDTO와 필드는 같지만, CreateDTO와 달리 모든 필드가 필수요소가 아닌 경우 PartialType으로 부분타입구현이 가능하다. - ex) UpdateDTO Pipe 유효성 검사용 파이프 미들웨어 install npm install class-validator class-transformer 2. main.ts > app.useGlobalPipes(new ValidationPipe()); import { ValidationPipe } from '@nestjs/common'; import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; as..

재학습/NestJS 2022.12.12

[NestJS] 기본파일체크와 Generate의 신기함(?)

Check Default File main.ts app.module.ts @module이라는 데코레이터를 볼 수 있다. 루트 모듈 app.controller.ts @get이라는 데코레이터를 볼 수 있다. appService의 getHello()를 리턴한다. app.service.ts @Injectable이라는 데코레이터를 볼 수 있다. 문자열 "Hello World"를 출력한다. 데코레이터 = Spring의 어노테이션 기능을 하는 것 같다. 모듈이란 ? 한가지 역할을 하는 앱, 컴포넌트 요런 느낌 App Module 루트 모듈 어플리케이션 접근점 AppController, AppProvider를 가지고있어야 함 Controller URL을 가져오고 함수 리턴(URL과 함수 매핑) @Get (express..

재학습/NestJS 2022.12.11

[NestJS] NestJS 프레임워크, 설치와 실행

Nest 공식문서 ( https://nestjs.com ) NodeJS위에서 움직이는 프레임워크 NodeJS > Express(or Fastify) > Nest Ruby - Ruby on Rail Python - Django Java - Spring Javascript - Nest 객체지향, 함수형 프로그래밍 가능 Setup npm install https://nodejs.org/en/ 18.12.1LTS nest install sudo npm install -g @nestjs/cli nest project setup nset new [project-name] Nest Install Error npm ERR! code EACCES npm ERR! syscall mkdir npm ERR! path /usr..

재학습/NestJS 2022.12.09
반응형