Language
-
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 되는 것을 확인할 수 있습니다. 하..
-
[Javascript] - Promise AllLanguage/Javascript 2022. 1. 28. 00:19
async/await Promise All Promise All 순서와 무관한 여러 개의 비동기 처리를 병렬로 처리하기 위해 사용하는 기능입니다. 예를 들면, 하나의 상품 키 값을 가지고 "상품을 조회하고, 그 상품에 대한 리뷰들을 조회" 하는 경우입니다. 덧셈, 뺄셈, 나눗셈 3 개의 비동기 처리를 하는 예제로 진행했습니다. Example 개별로 처리 const calcPlus = async (a, b) => { return a + b; } const calcMinus = async (a, b) => { return a - b; } const calcDivide = async (a, b) => { return a / b; } const promiseAllTest = async () => { const ..
-
[Javscript] map 과 forEach 의 차이점Language/Javascript 2022. 1. 19. 22:51
map 과 forEach 의 차이점 forEach 와 map 은 배열의 요소들을 함수에 넣고 실행하는 과정은 같지만, map 은 그 결과에 return 값이 있지만, forEach 는 return 을 보내지 않습니다. for 문을 통해서도 충분히 해결 가능하지만 이러한 map 이나 forEach 와 같은 선언적 프로그래밍 스타일은 표현력이 뛰어나고 작성하기 쉽고 훨씬 읽기 쉽습니다. 많은 이유로 좋지만 성능이 중요한 경우에는 그렇지 못합니다. for 문은 일반적으로 선언적 루프보다 3배 이상 빠르다고 합니다. 대부분의 응용 프로그램에서 큰 차이를 보이지는 않지만, 비디오 처리, 과학 계산 또는 게임 엔진에서 대량의 데이터 처리에서는 전체 성능에 큰 영향을 미칩니다. 위의 경우가 아니면 대부분은 단순한 선..
-
[Typescript] - Type Alias 와 InterfaceLanguage/Typescript 2021. 12. 12. 19:16
Typescript Interface 와 Type 차이점 타입스크립트를 통해 개발하다보면 Type Alias 와 Interface 중 어는 것을 사용해서 Type 을 정의해야할까 라는 문제가 생깁니다. 공통점 객체 타입에 대한 이름 지어주기 Interface interface UserInterface { name: string age: number } const user: UserInterface = { name: 'choi', age: 100 } Type Alias type UserTypeAlias = { name: string, age: number } const user: UserTypeAlias = { name : 'choi', age: 100 } 차이점 1. 확장 하는 법 Type Alias 와..
-
[Javascript] Class 와 ObjectLanguage/Javascript 2021. 10. 14. 15:20
Class 와 Object Class 연관 있는 데이터들이 fields 와 method 로 종합적으로 묶여있는 것 Data Class : fields 로만 이루어진 Class Class 는 데이터가 직접 들어가 있지는 않으며, 들어올 수 있는 데이터를 한 번만 선언한다. 붕어빵을 만드는 틀과 비슷하다고 생각하면 된다 Object Class 에서 실제로 데이터를 넣어 만들어진 것으로 Class 에서 새로운 instance 를 생성하면 Object 가 되는 것이다 Class 를 이용해서 여러 개의 Object 생성이 가능하다 Class 는 틀만 있는 것이기에 메모리에 올라가 있지 않지만, Object 는 데이터를 넣기 때문에 메모리에 올라가 있다 Class 가 붕어빵을 만드는 틀이라면 Object 는 틀로 ..