-
타입스크립트의 고급 타입 정리TIL. 2024. 6. 28. 01:45
TypeScript는 JavaScript에 정적 타입을 추가하여 코드의 안정성과 가독성을 높이는 언어입니다.
TypeScript에는 기본 타입 외에도 고급 타입이 존재하여 복잡한 타입 정의와 더 강력한 타입 체크를 가능하게 합니다.
오늘은
TypeScript의 고급 타입들을 정리한 자료입니다.
1. 유니온 타입 (Union Types)
여러 타입 중 하나를 가질 수 있는 변수를 정의할 때 사용합니다.
typescript let value: string | number; value = "Hello"; value = 123;
2. 인터섹션 타입 (Intersection Types)
여러 타입을 결합하여 하나의 타입으로 만들 때 사용합니다.interface Person { name: string; } interface Employee { employeeId: number; } type EmployeePerson = Person & Employee; const emp: EmployeePerson = { name: "John", employeeId: 1234 };
3. 제네릭 (Generics)
타입을 함수나 클래스의 매개변수로 사용할 때 사용합니다.function identity<T>(arg: T): T { return arg; } let output = identity<string>("Hello");
4. 맵드 타입 (Mapped Types)
기존 타입을 변환하여 새로운 타입을 만들 때 사용합니다.type Readonly<T> = { readonly [P in keyof T]: T[P]; }; interface Person { name: string; age: number; } type ReadonlyPerson = Readonly<Person>;
5. 조건부 타입 (Conditional Types)
타입에 조건을 걸어 다른 타입을 반환하게 합니다.type IsString<T> = T extends string ? "string" : "not string"; type Test1 = IsString<string>; // "string" type Test2 = IsString<number>; // "not string"
6. 인덱스 타입 (Index Types)
객체의 속성을 동적으로 접근할 때 사용합니다.function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] { return obj[key]; } const person = { name: "John", age: 30 }; const personName = getProperty(person, "name"); // John
7. 튜플 타입 (Tuple Types)
고정된 요소 수와 타입을 가지는 배열을 정의할 때 사용합니다.let tuple: [string, number]; tuple = ["hello", 10];
8. 유틸리티 타입 (Utility Types)
- `Partial<T>`: T의 모든 속성을 선택적(optional)으로 만듭니다.
- `Required<T>`: T의 모든 속성을 필수(required)로 만듭니다.
- `Readonly<T>`: T의 모든 속성을 읽기 전용(readonly)으로 만듭니다.
- `Pick<T, K extends keyof T>`: T에서 특정 속성 K만 선택하여 새로운 타입을 만듭니다.
- `Omit<T, K extends keyof any>`: T에서 특정 속성 K를 제외한 타입을 만듭니다.
- `Record<K extends keyof any, T>`: K 타입의 키와 T 타입의 값을 가지는 객체 타입을 만듭니다.interface Todo { title: string; description: string; completed: boolean; } type PartialTodo = Partial<Todo>; type ReadonlyTodo = Readonly<Todo>;
'TIL.' 카테고리의 다른 글
2024 Epson Innovation challenge 참여 후기 (0) 2024.06.30 공연 예매 프로젝트 - ERD, API 명세서 (0) 2024.06.28 타입스크립트의 컴파일 (0) 2024.06.27 동적 타입 언어와 정적 타입 언어 (0) 2024.06.26 HTTP 메서드와 상태코드 (0) 2024.06.24