ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 타입스크립트의 고급 타입 정리
    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>;

     

Designed by Tistory.