객체타입으로부터 key들을 유니언 타입으로 뽑아줌
interface Person {
name: string;
age: number;
}
function getPropertyKey(person: Person, key: ??) {
return person[key];
}
const person: Person = {
name: 'kang',
age: 30
}
getPropertyKey(person, "name")
getPropertyKey
함수의 매개변수 중 key는 string, 이렇게 지정해버리면 나중에 getPropertyKey(person, “name123”)
이렇게 없는 매개변수 넣게되면 return에서 오류가 발생한다. (그냥 string 해도 이미 빨간줄이 그어지기는 한다.)function getPropertyKey(person: Person, key: "name" | "age") {
return person[key];
}
keyof
연산자가 나왔다.keyof
는 설명처럼 객체타입으로부터 key들을 유니언 타입으로 뽑아준다. 따라서 위의 예시에선 string | number
로 뽑아주는 것이다.interface Person {
name: string;
age: number;
}
function getPropertyKey(person: Person, key: keyof Person) {
return person[key];
}
const person: Person = {
name: 'kang',
age: 30
}
getPropertyKey(person, "name")
💡 keyof 뒤에는 당연하게도 타입이 들어가야한다.
function getPropertyKey(person: Person, key: keyof typeof person) {
return person[key];
}