keyof & typeof 연산자 - 타입 조작하기

/**
 * keyof 연산자
 */

// interface Person{
//     name: string;
//     age : number;
// }

// typeof로도 타입 추출 가능
// -> 이렇게 쓰면 person의 객체의 타입을 추론해서 Person에 타입을 설정해줌
type Person = typeof person; 

// keyof 를 쓰면 Person 객체 타입으로 부터 객체 타입의 모든 프로퍼티의 키를 유니온 타입으로 추출
// keyof 뒤에는 반드시 타입이 와야함
function getPropertyKey(person: Person, key: keyof typeof person){ // 이렇게 typeof person으로 뽑아낸 타입의 프로퍼티의 타입을 유니온으로 뽑아낼 수 있음
    return person[key];
}

const person = {
    name: "박정수",
    age: 26
}

getPropertyKey(person, "name"); // 박정수