-
Typescript - Type MappingFront-end/Typesrcipt 2023. 4. 24. 12:13728x90반응형
Typescript keyof
Typescript keyof 란 class, 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