키워드나 기존 타입의 이름만 사용해 모든 타입을 나타낼 수는 없습니다. 때로는 기존 타입의
속성 일부를 변환해서 두 타입을 결합하는 새로운 타입을 생성해야 할 때도 있습니다.
9.3.1 9.3.1
keyofkeyof
자바스크립트 객체는 (반드시 그렇지는 않지만) 일반적으로
string
타입인 동적값을 사용하
여 검색된 멤버를 갖습니다. 타입 시스템에서 이러한 키를 표현하려면 상당히 까다로울 수 있
습니다.
string
같은 포괄적인 원시 타입을 사용하면 컨테이너 값에 대해 유효하지 않은 키가
허용됩니다.
13
장 ‘구성 옵션’에서 설명할 더 엄격한 구성 설정을 사용할 때 타입스크립트는 다음 예제에서
볼 수 있는 것과 같은
ratings
[
key
]
에 대한 오류를 보고합니다. 타입
string
은
Ratings
인
터페이스에서 속성으로 허용되지 않는 값을 허용하고,
Ratings
는
string
키를 허용하는 인덱
스 시그니처를 선언하지 않습니다.
interface Ratings {
audience: number;
critics: number;
}
function getRating(ratings: Ratings, key: string): number {
return ratings[key];
// ~~~~~~~~~~~~ ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month, and much more.