더북(TheBook)

배열에 keyof를 적용하면 'number | 배열_속성_이름_유니언 | 배열_인덱스_문자열_유니언'이 됩니다. 배열 속성 이름은 배열에 공통적으로 존재하는 length, forEach, lastIndexOf 등을 의미하고 배열 인덱스 문자열은 [1, 2, 3]의 인덱스인 '0' | '1' | '2'를 의미합니다. 재밌는 점이 있는데, ArrayKeys에 문자열 '3'은 안 되지만 숫자 3은 포함된다는 것입니다. 모든 number는 배열의 키로 허용되기 때문입니다.

튜플과 배열에도 인덱스 접근 타입을 사용할 수 있습니다.

type Arr = [1, 3, 5];
type First = Arr[0]; 
// type First = 1
type Length = Arr['length']; 
// type Length = 3

type Arr2 = (string | boolean)[];
type El = Arr2[number]; 
// type El = string | boolean

배열에는 숫자 키가 허용되므로 Arr[0]Arr['0'] 모두 유효한 문법입니다. El 타입처럼 배열[number] 인덱스 접근 타입으로 배열 요소들의 타입을 모두 가져올 수도 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.