ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Typescript - Type Mapping
    Front-end/Typesrcipt 2023. 4. 24. 12:13
    728x90
    반응형

    Typescript keyof

    Typescript keyofclass, interface, Object 등 타입에서 key 값들을 모두 가져와서 유니언 타입으로 선언해준다.

    // interface 선언
    interface Person {
        age: number,
        name: string
    }
    
    // class 선언
    class Dog {
        name : string;
        constructor(name) {
            this.name = name;
        }
    }
    
    // keyof 를 사용하여 Person의 속성들을 모두 가져와 유니언 타입으로 만든다.
    type PersonKeys = keyof Person	// name | age
    
    // keyof 를 사용하여 Dog의 속성들을 모두 가져와 유니언 타입으로 만든다,.
    type DogKeys = keyof Dog;
    
    // PersonKeys 의 속성값이 저장된 유니언 타입을 선언가능하다.
    let p: PersonKeys = 'age';	
    let d: DogKeys = 'name';

     

    key 값을 index signature설정하면 타입에따라 선언된 값들만 들어올수있다.

    // index signature 로 선언한 interface
    interface Person {
        [key: string]: number,
    }
    
    // PersonKeys 타입은 string | number이다.
    type PersonKeys = keyof Person;
    
    // string | number 타입이면 모든값이 들어와도 괜찮다.
    let a: PersonKeys = 'zelord';

     

     

     

    반응형

     

     

     

    Type Mapping

    type 들을 잘못입력하여 바꿔주어야 할때 타입을 새로 생성 한 뒤 keyof 연산자를 선언하여 속성의 모든 타입을 변환한다.

    // 타입 선언
    type Car = {
        color: boolean,
        model: boolean,
        price: boolean | number,
    }
    
    
    // 속성의 모든 타입을 string으로 변환하기위해 keyof 를 사용한다.
    // MyType의 파라미터로 들어온 속성들의 타입을 모두 string으로 바꿔준다고 선언한다.
    type TypeChanger<MyType> = {
        [key in keyof MyType]: string	// 파라미터의 모든속성 color | model | price 타입을 string으로 변경
    }
    
    // 타입이 새로 바뀐 NewCar 타입 생성
    type NewCar = TypeChanger<Car>

     

    728x90
    반응형

    'Front-end > Typesrcipt' 카테고리의 다른 글

    Typescript - infer  (0) 2023.04.24
    Typescript - index signatures  (0) 2023.04.19
    Typescript - implements  (2) 2023.04.19
    Typescript - d.ts  (0) 2023.04.18
    Typescript - declare  (0) 2023.04.18
Designed by Tistory.