Web
[nestjs] 시작하기
1. 구조 확인하기 우선 설치가 완료된 디렉터리에 가서 package.json을 확인합니다. "scripts": { "prebuild": "rimraf dist", "build": "nest build", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", "start": "nest start", "start:dev": "nest start --watch", "start:debug": "nest start --debug --watch", "start:prod": "node dist/main", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", "test": "jest", "test:watch"..
[NestJS] 소개및 설치
※ 아래 내용을 진행하기 위해서는 node.js와 Express, TypeScript의 설치가 먼저 선행되어야 합니다. node.js에서 웹서비스를 제공하는 데 사용되는 가장 대표적인 모듈이 Express입니다. NestJS는 NodeJS 프레임워크로서 Express 위에서 동작합니다. 또는 설정에 따라서 Express와 비슷한 다른 웹 모듈(fastify와 같은)에서도 동작할 수 있는데 중요한 점은 웹서비스를 만들기 위한 기본구조를 제공한다는 것입니다. TypeScript를 기본으로 사용하며 매우 쉽고 구조적으로 체게화된 서비스를 만들 수 있습니다. 우선 다음 방법으로 nest cli를 설치합니다. npm -i g @nestjs/cli 설치완료 후 nest 명령을 내려 설치가 정상적으로 되었는지 확인합..
[TypeScript] tsconfig.json
tsconfig.json 파일은 TypeScript 컴파일러의 옵션을 설정하는 파일이며 다음의 방법으로 파일을 생성할 수 있습니다. tsc --init 위 명령으로 인해 생성된 파일은 tsconfig.json이며 파일을 열어보면 대략 아래 내용들이 들어가 있음을 알 수 있습니다. { "compilerOptions": { /* Visit https://aka.ms/tsconfig.json to read more about this file */ /* Basic Options */ // "incremental": true, /* Enable incremental compilation */ "target": "es5", /* Specify ECMAScript target version: 'ES3' (defau..
[javascript] 모듈(module)
Javascript에서 var변수를 선언하거나 함수를 정의하면 global에 등록되어서 window를 통해 곧바로 호출할 수 있습니다. 이게 문제가 될 수 있는건 중복되는 이름으로 변수나 함수가 선언되면 충돌을 일으킬 수 있다는 것입니다. 예를 들어 다음과 같이 a.js와 b.js에 공통적으로 add()라는 함수가 정의된 경우 function add(x, y) { return x + y; }; 중복되는 이름이 존재하기에 오류를 일으키게 됩니다. 이 문제를 해결하려면 각 js파일을 html페이지에서 모듈로 추가해야 합니다. 이렇게 하면 어떤 모듈에서 외부로 노출할 함수를 다음과 같이 export해야만 사용할 수 있게 됩니다. 그래서 a.js파일에 있는 add()함수를 아래와 같이 했다면 export def..
[TypeScript] 일반화 (Generic)
클래스나 함수에서 타입을 미리 결정짓지 않고 그것을 사용할 때 타입을 결정해 사용하는 것을 말합니다. let list = []; const Add = (x: number) => { list.push(x); }; Add(10); console.log(list[0]); 위 예제는 Add함수를 통해 list에 요소를 추가한 뒤 이를 보여주는 함수입니다. 그런데 Add를 보면 number만 받을 수 있습니다. 만약 string이나 기타 다른 형식이 다뤄져야 한다면 그에 맞는 형식의 배열과 변수를 모두 만들어야 한다는 뜻이 되지만 제네릭을 이용해 문제를 해결할 수도 있습니다. let list = []; function Add(x: T) { list.push(x); }; Add(10); Add('abc'); con..
[TypeScript] 객체지향 프로그래밍
※ Javascript에서의 객체지향과 크게 다르지 않습니다. TypeScript만의 객체지향을 말하는것이 아니니 주의해 주세요. 1. 클래스(Class) TypeScript에서 클래스는 아래와 같이 생성합니다. class Car { color: string = 'red'; speed: number = 0; Drive(acc): void { this.speed += acc; console.log('speed : ', this.speed); }; Stop(): void { this.speed = 0; console.log('stop'); }; }; const car = new Car(); console.log(car.color); Car라는 클래스는 color와 speed라는 멤버변수와 Drive(), S..
[TypeScript] 데이터 타입
1. 기본 타입 TypeScript에서 사용 가능한 기본 타입에는 number, string, boolean, undefined, null, unknown, any, void, never, object와 같은 것들이 있습니다. TypeSscript에서 변수를 선언할 때 타입을 지정할 수 있는데 아래 방법으로 변수를 선언하고 값을 할당할 수 있습니다. const mynum: number = 10; console.log(mynum); 물론 타입은 생략될 수 있습니다. 그러면 대입되는 값에 따라 타입이 자동으로 결정됩니다. 이를 타입 추론이라 하는데 함수를 사용할 때 매개변수나 반환되는 타입도 생략하면 매개변수는 any나 반환 형태는 return 되는 값의 타입에 따라 자동으로 결정됩니다. let myValu..
[TypeScript] 개요및 준비
1. 개요 TypeScript는 아주 간단하게만 말하면 Javascript에서 문제가 되었던 동적 타입과 OOP의 문제를 보완한 것이라고 생각하면 됩니다. 동적 타입이 아닌 정적 타입을 사용하고 OOP(Object Oriented Programming) 개념을 도입해 OOP의 프로그래밍 이점을 그대로 가져갈 수 있습니다. 동적 타입의 가장 큰 문제점은 오직 실행단계에서만 오류를 확인할 수 있다는 것입니다. 기존의 javascript는 다음과 같은 처리가 가능합니다. var i = 10; i = 'abc'; 변수에 대입되는 값의 형태에 따라 변수의 타입이 결정되는 방식이기에 여기까지는 아무런 문제 없이 지나갈 수 있습니다. 그런데 var i = 10; i = 'abc'; var j = 10 + i; 위와 ..