typeScript
-
Typescript - Assertion FunctionLanguage/Typescript 2023. 5. 24. 22:59
아래 모든 예제 코드들은 Typescript Playground 에서 작성했습니다. 유저가 존재하는지에 대한 여부를 확인하는 로직이 아래와 같다고 가정해봅시다. interface User { readonly id: number; readonly name: string; readonly email: string; } declare const user: User | null; function validateNotNullUser(user: User | null) { if (!user) { throw new Error('유저가 존재하지 않습니다'); } } validateNotNullUser(user); user; // User | null validateNotNullUser 함수는 유저가 존재하지 않을 경우 ..
-
Typescript - Class Private 필드는 진짜로 읽을 수 없을까?Language/Typescript 2022. 12. 28. 23:26
아래 private 으로 선언된 필드들을 가지고 있는 클래스가 있다. class Foo { private num: number; private str: string; constructor(num: number, str: string) { this.num = num; this.str = str; } } const foo = new Foo(1, 'str'); 만약 num 이나 str 필드를 읽으려고 한다면 에러가 발생할 것이다. // TS2341: Property 'num' is private and only accessible within class 'Foo'. foo.num; 에러 메시지를 확인해보면 num 속성은 private 이고, 클래스 내부에서만 접근이 가능하다는 것이다. 그렇다면 private ..
-
Typescript 로 알아보는 SOLID(객체지향 설계)Language/Typescript 2022. 4. 12. 00:29
Typescript 로 알아보는 SOLID(객체지향 설계) 주로 Express 를 통해 서버를 개발하다가, 최근 NestJS 를 사용하고 공부하다 보니 객체지향 설계에 대해 더욱 궁금하고 깊게 알고 싶어져 정리하게 되었습니다. SOLID 디자인 원칙은 더 나은, 더 깔끔한 코드를 작성하는 방법으로 Robert C. Martin 이라는 소프트웨어 엔지니어가 발명했습니다. SOLID 원칙을 Typescript 를 통해 알아볼려고 합니다. 1. Single Responsibility Principle(SRP) - 단일 책임 원칙 "어떤 클래스를 변경해야하는 이유는 단 하나뿐이여야 한다" 클래스는 하나의 목적과 책임을 가지고 있어야하기에, 변경하기 위한 이유도 하나이어야 한다. 이 원칙을 따르게 된다면 코드를 ..
-
[Typescript] - 배열 내에서 undefined 제거하기Language/Typescript 2022. 3. 28. 01:37
const arr: (string | undefined)[] = ['test1', 'test2', undefined, 'test3', 'test4']; 위와 같은 배열에서 undefined 를 제거하기 위해서는 filter() 메서드를 사용하는 방법이 있습니다. const arr: (string | undefined)[] = ['test1', 'test2', undefined, 'test3', 'test4']; const filter_undefined_arr = arr.filter((data) => data !== undefined); // ['test1', 'test2', 'test3', 'test4'] 결과는 undefined type 이 제거된 배열이 return 되는 것을 확인할 수 있습니다. 하..
-
NestJS Circular Dependency(순환 종속성) 문제Framework/NestJS 2021. 11. 22. 13:17
Nest.JS Circular Dependency(순환 종속성) 문제 NestJS 를 통해 프로젝트 구현중에 아래 사진과 같은 문제가 발생했다. Circular Dependency(순환 종속성) 공식문서 를 확인해보면 순환 종속성은 클래스 A 에 클래스 B 가 필요하고, 클래스 B 에 클래스 A 가 필요할 때 발생한다고 합니다. 가능한 최대한 순환종속성은 피해야 하지만 항상 그렇게 개발할 수는 없기에 NestJS 에서는 해결 방안을 제공해줍니다. 해결방법: 전달 참조(Forward Reference) @nestjs/common 에서 패키지로 제공해주는 forwardRef() 기능을 사용하면 해결할 수 있습니다. 클래스에 중첩을 허용할 수 있도록 하는 유틸리티 기능입니다. xxx.module.ts 에서 모..
-
TypeScript 타입 정리Language/Typescript 2021. 9. 23. 22:37
Typescript Type 타입 스크립트는 일반 변수, 매개 변수, 객체 속성 등에 타입을 지정할 수 있다. 형식 function Example(a: Type, b: Type): RuturnType { return a + b; } let variable: Type = Example(1, 2); - 예제 ```typescript function add (a: number, b: number): number { return a + b; } const sum_num: number = add(1, 2); const err_sun_num: String = add(1, 2); // ERROR Type 선언 Boolean True/False 값을 나타내는 타입이다. let isDone: boolean = false..