TypeScript
keyof 연산자
눙엉
2021. 12. 23. 09:13
keyof 연산자를 object에 사용하면 object가 가지고 있는 모든 key값을 union type으로 합쳐서 내보내 준다.
object에 들어있는 key를 사용해서 새로운 타입을 만들 때 사용하는 연산자이다.
interface Car {
name: string;
price: number;
}
type CarKeys = keyof Car;
let carPrice :CarKeys = 'price';
let carName :Carkeys = 'name';
let carName2 :Carkeys = 'namename'; // 'price' or 'name' 만 가능하다.
keyof 연산자를 사용하면 Car 객체 안의 key 값이 Type이 된다.
그래서 'price' 또는 'name' 은 사용되지만 'namename' 같은 값은 사용할 수가 없다.
interface Macbook {
[key :string]: number;
}
type MacbookKeys = keyof Macbook;
let price :MacbookKeys = '10000000';
let model :MacbookKeys = 'MacbookPro';
[key :string]으로 사용하면 키값에 모든 문자 key를 사용할 수 있다.
keyof Macbook을 하게 되면 string타입이 된다. (사실 string | number 가 된다. 왜냐하면 숫자를 넣어도 문자로 변하기 때문이다.)
[key: number]를 하면 숫자만 사용할 수 있어서 keyof Macbook을 하게되면 number 타입이 된다.