DTO 란? DTO (Data Transfer Object) 란, 계층 간 데이터 전송을 위해 사용되는 객체이다. DTO의 역할 요청에서 받아온 데이터를 타입에 맞게 바인딩하고 유효성 검사 수행 Controller 계층과 Service 계층 사이에 데이터를 전달 응답 객체로 데이터를 클라이언트에 전달 NestJS에서의 DTO의 형태 export class CreateUserDto { @IsNotEmpty() name: string; @IsNotEmpty() password: string; @IsNotEmpty() email: string; @IsOptional() gender?: string; } 클래스로 선언 Typescript와 class-validator 사용 강력한 데이터 유효성 검사 기능 DTO..
전체 글
JWT 란? JWT (JSON Web Token)이란 사용자의 대한 정보를 JSON 형태로 안전하게 전달하기 위한 개방형 표준 규약이다. 디지털 서명이 되어있으므로 신뢰할 수 있다. JWT의 구조 JWT는 Header / Payload / Signature 세 부분으로 나누어져 있다. Header 토큰에 대한 메타 데이터가 포함되어 있다. ( 타입, 알고리즘... ) Payload 전달하려는 사용자의 정보, 만료 기간 등을 포함하고 있다. Signature 보낸 사람에 의해 서명되어 있으며 조작이 되지 않았는지 확인하는 데 사용되는 서명이다. JWT 사용의 장점 인증에 필요한 모든 정보를 담고 있기 때문에 별도의 저장소가 없어도 된다. Header와 Payload를 가지고 Signature를 생성하므로 ..
https://school.programmers.co.kr/learn/courses/30/lessons/120809?language=javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(numbers) { return numbers.map((v) => v * 2); } map 함수로 배열의 요소를 하나 씩 돌면서 2를 곱한다.
https://school.programmers.co.kr/learn/courses/30/lessons/120805 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(num1, num2) { return Math.trunc(num1 / num2); } trunc() 는 인수가 양수인지 음수인지에 관계없이 점과 그 오른쪽에 있는 숫자를 잘라낸다.
NaN 이란? Not a Number 의 약자로 연산 과정에서 정상적인 값을 얻지 못할 때 출력되는 값. 주로, 숫자를 계산할 때 숫자가 아닌 값이 들어가서 정상적인 결과를 얻지 못했을 때 출력된다. NaN 인지 체크하는 방법 isNaN() 함수를 사용한다. function check(x) { if(isNaN(x)) { return true; } return false; } NaN 이면 true를 반환하고, 아니면 false를 반환한다. NaN 의 타입은? console.log(typeof(NaN)) // number number...? 분명히 NaN은 Not a Number. 즉, 숫자가 아니라고 했는데 숫자형이다. 왜이럴까? NaN 은 왜 number 타입일까? number 타입에는 일반적인 숫자 외..
캡슐화 캡슐화란 객체의 프로퍼티와 메서드를 하나로 묶는 것을 의미한다. 캠슐화는 객체의 특정 프로퍼티와 메서드를 감출 목적으로 사용하기도 한다. (정보 은닉) 왜 정보 은닉을 해야할까? 외부에 공개할 필요가 없는 데이터를 공개되지 않도록 감추어, 원하지 않는 접근으로 데이터의 상태가 변경되는 것을 방지해 보호한다. JavaScript 의 정보 은닉 자바스크립트는 public, private, protected 와 같은 접근 제한자를 제공하지 않는다. 따라서, 자바스크립트의 모든 프로퍼티와 메서드는 외부에 공개되어 있다. (public) 캡슐화와 정보 은닉의 방법 1. 자바스크립트 에서는 클로저(Closure)의 개념을 응용해서 캡슐화 및 정보 은닉을 해야한다. function createUser(name..
Getter 와 Setter Getter 와 Setter 은 자체적으로 값을 갖고 있지 않고, 객체의 프로퍼티를 읽거나 조작할 때 사용하는 접근자 함수이다. Getter 는 메서드 이름 앞에 get 키워드를 사용해 정의하고, Setter 는 메서드 이름 앞에 set 키워드를 사용해 정의한다. const person = { firstName : 'Asher', lastName : 'Park', // getter get fullName() { return `${this.firstName} ${this.lastName}`; } // setter set fullName(name) { [this.firstName, this.lastName] = name.split(' '); } }; console.log(pers..
화살표 함수 function 키워드 대신 화살표 ( => ) 를 사용하여 간략하게 함수를 정의. 콜백 함수 내부에서 this 가 전역 객체를 가리키는 문제를 해결하기 위한 대안으로 유용하게 사용. 화살표 함수의 정의 const add = (x, y) => x + y; add(2,3); // 6 매개변수가 한 개인 경우 소괄호 생략 가능. const arrow = x => { console.log(x); }; 함수 내부가 하나의 문으로 구성된다면 중괄호 생략 가능. const power = x => x**2 화살표 함수와 일반 함수의 차이 화살표 함수는 함수 자체의 this 바인딩을 가지지 않음. 따라서, 화살표 함수 내부에서 this를 참조하면 상위 스코프의 this를 참조 = lexical this 화..