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 타입이 된다.
'TypeScript' 카테고리의 다른 글
[TS] TypeScript 구조적 타이핑, 덕 타이핑 (0) | 2022.12.30 |
---|---|
[TS] TypeScript 객체 프로퍼티 접근 (Index Signature) (0) | 2022.09.23 |
declare 이란? (0) | 2021.12.15 |
tsc -w (0) | 2021.11.23 |
TypeScript 문법 (0) | 2021.11.06 |