
keyof 연산자
interface Person {
age: number;
name: string;
}
type PersonKeys = keyof Person; //"age" | "name" 타입
let a :PersonKeys = 'age'; //가능
let b :PersonKeys = 'ageeee'; //불가능
keyof 연산자를 object 타입에 사용하면 모든 key값을 union타입으로 합친다.
=> "age" | "name" 타입
interface Person {
[key :number]: number;
}
type PersonKeys = keyof Person; //number 타입
let a :PersonKeys = 10; //가능
let b :PersonKeys = 20; //가능
index signatures 방식을 사용
=> 모든 자료 즉 number 타입이 됨.
타입변환 Mapped types
type Car = {
color: boolean,
model : boolean,
price : boolean | number,
};
type TypeChanger <T> = {
[key in keyof T]: string;
};
type NewType = TypeChanger<Car>;
let obj :NewType = {
color: 'red',
model : 'kia',
price : '300',
}
[ key in keyof T] : string (변경할 타입)
=> Car 타입에 있는 모든 속성을 string 타입으로 변경해 달라.라는 의미
in = 왼쪽이 오른쪽에 들어있냐라는 의미.
모든 속성의 타입을 변경할 일은 거의 없겠지만, 알아두면 쓸모있는 지식인 것 같다.
사실 type mapping 지식보단, 제네릭 사용법을 더 공부한 느낌?
'TypeScript' 카테고리의 다른 글
조건문으로 타입만들기 & infer (0) | 2023.07.04 |
---|---|
index signatures (0) | 2023.07.04 |
implements 키워드 (0) | 2023.07.04 |
d.ts 타입 정리 파일 (0) | 2023.07.04 |
Ambient Module + declare (0) | 2023.07.04 |

keyof 연산자
interface Person {
age: number;
name: string;
}
type PersonKeys = keyof Person; //"age" | "name" 타입
let a :PersonKeys = 'age'; //가능
let b :PersonKeys = 'ageeee'; //불가능
keyof 연산자를 object 타입에 사용하면 모든 key값을 union타입으로 합친다.
=> "age" | "name" 타입
interface Person {
[key :number]: number;
}
type PersonKeys = keyof Person; //number 타입
let a :PersonKeys = 10; //가능
let b :PersonKeys = 20; //가능
index signatures 방식을 사용
=> 모든 자료 즉 number 타입이 됨.
타입변환 Mapped types
type Car = {
color: boolean,
model : boolean,
price : boolean | number,
};
type TypeChanger <T> = {
[key in keyof T]: string;
};
type NewType = TypeChanger<Car>;
let obj :NewType = {
color: 'red',
model : 'kia',
price : '300',
}
[ key in keyof T] : string (변경할 타입)
=> Car 타입에 있는 모든 속성을 string 타입으로 변경해 달라.라는 의미
in = 왼쪽이 오른쪽에 들어있냐라는 의미.
모든 속성의 타입을 변경할 일은 거의 없겠지만, 알아두면 쓸모있는 지식인 것 같다.
사실 type mapping 지식보단, 제네릭 사용법을 더 공부한 느낌?
'TypeScript' 카테고리의 다른 글
조건문으로 타입만들기 & infer (0) | 2023.07.04 |
---|---|
index signatures (0) | 2023.07.04 |
implements 키워드 (0) | 2023.07.04 |
d.ts 타입 정리 파일 (0) | 2023.07.04 |
Ambient Module + declare (0) | 2023.07.04 |