본문 바로가기

전체 글111

NestJS | TypeORM Column Annotation UserModel.tsimport { Column, CreateDateColumn, Entity, Generated, JoinColumn, ManyToMany, OneToMany, OneToOne, PrimaryColumn, PrimaryGeneratedColumn, UpdateDateColumn, VersionColumn,} from 'typeorm';import { ProfileModel } from './profile.entity';import { PostModel } from './post.entity';import { TagModel } from './tag.entity';// 특정값 제한export enum Role { USER = 'user', ADMIN = 'adm.. 2024. 11. 12.
NestJS | Docker, TypeORM 설치 Docker컨테이너를 사용하여 응용프로그램을 더 쉽게 만들고 배포하여 실행할 수 있도록 설계된 도구내 컴퓨터에선 되는데 다른 사람 컴퓨터에서는 코드가 실행이 안되는 경우가 있음 이를 해결하기위해 도커를 사용함컨테이너코드와 모든 종속성을 패키지화하여 프로그램이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적이게 실행할 수 있도록 하는 소프트웨어의 표준 단위https://www.docker.com/ Docker: Accelerated Container Application DevelopmentDocker is a platform designed to help developers build, share, and run container applications. We handle the tedious s.. 2024. 11. 12.
NestJS | 의존성 주입, 제어의 역전 Depencency Injection - 의존성 주입의존성 주입이란 A, B 라는 클래스가 존재할 때 A가 B의 기능을 사용하고 있다면 A는 B에 의존한다 라고 할 수 있다.의존하고 있는 값을 주입해준다는  뜻으로 의존성 주입이라고 함Inversion of Control - 제어의 역전일반적으로 Instance의 생성과 삭제는 개발자가 관리하는 영역이다.하지만 이를 프레임워크가 관리하도록 제어권이 역전되는 것을 제어의 역전이라고 한다.NestJS 는 실행과 동시에 IoC 컨테이너가 생성된다예를 들어 A,C 라는 컨트롤러가 있고, B 라는 서비스를 의존하고 있다면IoC 컨테이너가 B 의 인스턴스를 생성하고 인스턴스 B의 라이프사이클을 제어한다. 각 컨트롤러에서 서비스 B가 필요할 때마다 IoC 컨테이너가.. 2024. 11. 6.
Typescript | 조건부 타입, infer 조건부 타입조건부 타입은 extends 와 삼항 연산자를 이용해 조건에 따라 각각 다른 타입을 정의하도록 돕는 문법이다. type A = number extends string ? number : string;위 조건부 타입의 조건식 number extends string은 number 타입이 string 타입의 서브타입이 아니기 때문에 거짓이 되고 그 결과 타입 A는 string 타입이 된다.type ObjA = { a: number;};type ObjB = { a: number; b: number;};type B = ObjB extends ObjA ? number : string;B는 ObjB는 ObjA의 서브 타입 이므로 조건식이 참이되어 number 타입이 된다.제네릭 조건부 타입조건부 타입.. 2024. 11. 4.
Typescript | 타입조작 ( Indexed Access Type, key of & typeof 연산자, mapped Type, Template literal Type ) 타입조작 타입을 조작한다는 것은 기본 타입이나 별칭 또는 인터페이스로 만든 원래 존재하던 타입들을 상황에 따라유동적으로 다른 타입으로 변환하는 타입스크립트의 강력하고도 독특한 기능이다. Indexed Access Type인덱스를 이용해 다른 타입내의 특적 프로퍼티의 타입을 추출하는 타입이다.객체, 배열, 튜플에 사용할 수 있다. 객체 프로퍼티의 타입 추출하기다음과 같은 게시글을 표현하는 객체 타입이 있다고 가정한다. 그리고 게시글도 하나 변수로 만들어 준다.interface Post { title: string; content: string; author: { id: number; name: string; };}const post: Post = { title: "게시글 제목", co.. 2024. 11. 4.
Typescript | 제네릭 인터페이스, 제네릭 타입 별칭, 제네릭 클래스, Promise와 제네릭 제네릭 인터페이스제네릭은 인터페이스에도 적용할 수 있다. 다음과 같이 인터페이스에 타입 변수를 선언해 사용하면 된다.//키페어를 저장하는 객체의 타입을 제네릭 인터페이스로 정의interface KeyPair { key: K; value: V;}다음과 같이 변수의 타입으로 정의해서 사용할 수 있다.let keyPair: KeyPair = { key: "key", value: 0,};let keyPair2: KeyPair = { key: true, value: ["1"],}; 인덱스 시그니쳐와 함께 사용하기제네릭 인터페이스는 인덱스 시그니쳐와 함께 사용하면 기존보다 훨씬 유연한 객체 타입을 정의할 수 있다.interface Map { [key: string]: V;}let stringMap: M.. 2024. 11. 3.