특정 객체 타입으로부터 프로퍼티 키들을 모두 스트링 리터럴 유니온 타입으로 추출하는 연산자
interface Person {
name: string;
age: number;
}
function getPropertyKey(person: Person, key: "name" | "age") {
return person[key];
}
const person: Person = {
name: "이정환",
age: 27,
};
getPropertyKey(person, "name"); // 이정환
Person
의 프로퍼티 타입이 바뀔때마다 매번 key
를 재정의 해주기 어렵다. → keyof연산을 사용
interface Person {
name: string;
age: number;
}
function getPropertyKey(person: Person, key: keyof Person) {
return person[key];
}
const person: Person = {
name: "이정환",
age: 27,
};
getPropertyKey(person, "name"); // 이정환
keyof Person
은 Person의 키 값들이 유니온으로 추출됨 ("name" | "age" | ...
)type Person = typeof person; // 👈
function getPropertyKey(person: Person, key: keyof typeof person) { // 👈
return person[key];
}
const person = {
name: "이정환",
age: 27,
};
getPropertyKey(person, "name"); // 이정환
위와 같이 코드를 작성하면 타입스크립트가 변수 person
에서 타입을 추론함
다음과 같은 형식으로 적용됨