더북(TheBook)

인터페이스의 속성 키 자리에 [key: number]라는 문법이 있는데 이는 이 객체의 length를 제외한 속성 키가 전부 number라는 의미입니다. 이 문법을 인덱스 시그니처(Index Signature)라고 부릅니다. length는 인덱스 시그니처 이전에 표기했으므로 number가 아니어도 됩니다.

참고로 Arr 인터페이스는 정확하게 배열을 구현한 것이 아니기 때문에 arr.slice 같은 배열의 메서드를 사용할 수 없습니다. 배열의 메서드를 사용하고 싶으면 다음 절에서 배우는 방법대로 인터페이스를 만들어야 합니다.

일반적으로 객체의 속성 키는 문자열과 심볼만 가능합니다. 앞의 예제처럼 숫자도 되는 것 아니냐 할 수 있지만, 실제로는 자바스크립트가 다른 자료형의 값이 속성 키로 들어오면 알아서 문자열로 바꿔서 사용하고 있기에 착각하는 것입니다. 이는 다음과 같은 자바스크립트 코드로 확인할 수 있습니다.

자바스크립트

const obj = {
  '[object Object]': 'wow',
}
console.log(({}).toString()); // [object Object]
console.log(obj[{}]); // wow
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.