typescript 공부 7

타입스크립트 타입 정복:타입의 구분

TypeScript의 Type은 어떻게 나누어지는가? 1. Static 정적 유형은 "컴파일 타임" 또는 "프로그램을 실행하지 않고" 이미 알고있는 유형을 의미 user-defined type(function, tuple, array, object ...), primitive type(string, number, boolean ...) 으로 세부 분류. 2. Generic Generic은 단일 데이터 형식이 아닌 다양한 데이터 형식으로 작업할 수 있는 구성 요소를 만드는 데 사용 3. Decorators 클래스 선언, 메서드, 속성, 접근자 및 매개변수에 첨부할 수 있는 특수한 데이터 유형 let any: any let number: number = 5 let never: never = any // ❌ ..

타입스크립트 타입 정복: Polymorphic Function

프로그램 언어의 다형성(多形性, polymorphism; 폴리모피즘)은 그 프로그래밍 언어의 자료형 체계의 성질을 나타내는 것으로, 프로그램 언어의 각 요소들(상수, 변수, 식, 오브젝트, 함수, 메서드 등)이 다양한 자료형(type)에 속하는 것이 허가되는 성질을 가리킨다. 출처 - 위키백과 다형성(컴퓨터 과학) 다형성(Polymorphism)은 프로그래밍 언어 이론에 깊이 뿌리를 둔 개념이며 다양한 종류가 있습니다. 이 글에서는 타입스크립트의 함수를 두 종류의 다형성으로 바라보고 생각합니다. 즉, 인수 타입에 따라 다르게 동작하는 함수(i.e. ad-hoc polymorphisms)와 다양한 수의 인수를 취하는 함수(i.e. parametric polymorphisms)입니다. Union type 만..

타입스크립트 타입 정복: Type Guards와 Narrowing

* 이 프로젝트는 기본적으로 TypeScript를 써 보았고, 내장된 유틸리티 타입들과 Generic 등을 알고 있는 상태에서 진행하는 것을 추천합니다. 그렇지 않다면, 공식 사이트 등을 참고해가며 학습과 병행하는 것을 추천합니다. Narrowing과 type guards Narrowing은 type guards를 사용해 type을 좁혀 더 정확하게 만드는 과정입니다. type guards는 type의 범위를 좁히는 데 도움을 주는 특별한 검사 방식을 말합니다. 이해가 쉽도록 예제로 풀어보겠습니다. 여기, 천 단위 구분 기호를 추가해주는 함수가 있습니다. export function withCommas(value: number) { const formatter = new Intl.NumberFormat(..

타입스크립트 타입 정복: Conditional Types

* 이 프로젝트는 기본적으로 TypeScript를 써 보았고, 내장된 유틸리티 타입들과 Generic 등을 알고 있는 상태에서 진행하는 것을 추천합니다. 그렇지 않다면, 공식 사이트 등을 참고해가며 학습과 병행하는 것을 추천합니다. 2022.07.02 - [개발/type-challenges] - 타입스크립트 타입 정복: 내장 유틸리티 타입을 만들어보자 지난 글에서는 타입스크립트에 내장되어 자주 사용하게 되는 유틸리티 타입들을 직접 구현해보는 문제들을 소개해 드렸습니다. 어떠셨나요? 이 문제들은 type-challenges의 쉬움~보통 난이도에 해당하는 유형이었습니다. 지난 글에서 살펴본 기본적인 keyof, in, Indexed Access Types와 더불어 설명하지 못했던 Conditional Typ..

타입스크립트 타입 정복: 내장 유틸리티 타입을 만들어보자

* 이 프로젝트는 기본적으로 TypeScript를 써 보았고, 내장된 유틸리티 타입들과 Generic 등을 알고 있는 상태에서 진행하는 것을 추천합니다. 그렇지 않다면, 공식 사이트 등을 참고해가며 학습과 병행하는 것을 추천합니다. Documentation - Utility Types Types which are globally included in TypeScript www.typescriptlang.org keyof operator keyof operator는 객체 유형의 키의 문자열 또는 숫자 리터럴 조합을 생성합니다. type Point = { x: number; y: number }; type P = keyof Point; // 'x' | 'y' in operator JavaScript에서 in..

타입스크립트 타입 정복: 준비운동

* 이 프로젝트는 기본적으로 TypeScript를 써 보았고, 내장된 유틸리티 타입들과 Generic 등을 알고 있는 상태에서 진행하는 것을 추천합니다. 그렇지 않다면, 공식 사이트 등을 참고해가며 학습과 병행하는 것을 추천합니다. type-challenges는 TypeScript의 공식 사이트의 playground를 통해 이루어집니다. 그리고 타입을 통해 정확하게 요구사항을 타입을 구현해 냈는지 테스트도 진행합니다. 아래는 가장 첫 문제, 몸풀기에 해당하는 hello-world 문제입니다. TS Playground - An online editor for exploring TypeScript and JavaScript The Playground lets you write TypeScript or Ja..

type-challenges를 통해 타입 시스템과 친해지기

TypeScript는 정적 타입을 지원하므로 컴파일 단계에서 잠재적인 버그를 피할 수 있는 장점이 있습니다. 또, 명시적인 정적 타입 지정은 개발자의 의도를 명확하게 기술할 수 있어 코드의 가독성을 높이고, 예측 가능하게 합니다. 이는 곧 프로젝트의 유지보수성의 향상에도 도움이 될 수 있습니다. 게다가 IDE는 이를 분석해 자동완성 기능까지 제공하니 생산성의 향상에도 도움을 줍니다. TypeScript를 처음 접한다면, 타입을 선언하는 데에 어려움이 다소 존재할 수 있습니다. 컴파일 에러를 피하기 위해 any로 지정하는 경우도 종종 생깁니다. any는 앞서 말한 TypeScript의 장점을 모두 상쇄합니다. 최대한 쓰지 않으려고 하는 게 중요하겠죠. 타입을 선언하는데에 어려움이 있는 것은 타입 시스템에 ..