type HelloAndHi = {
[key in 'hello' | 'hi']: string;
};
/*
type HelloAndHi = {
hello: string;
hi: string;
}
*/
in 연산자를 사용해서 인덱스 시그니처가 표현하지 못하는 타입을 표현합니다. in 연산자 오른쪽에는 유니언 타입이 와야 합니다. 유니언 타입에 속한 타입이 하나씩 순서대로 평가되어 객체의 속성이 됩니다. 먼저 'hello': string이 속성이 되고, 다음에는 'hi': string이 속성이 되어 최종적으로 { hello: string, hi: string } 객체가 됩니다.
다만 매핑된 객체 타입은 이것보다는 좀 더 복잡한 상황에 주로 사용합니다. 다음은 기존 객체 타입을 복사하는 코드입니다.