# 타입스크립트에서 배열과 객체를 인덱싱 하는 방법

타입스크립트에서 배열 요소와 객체의 속성을 접근할 때는 인터페이스를 사용하면 됩니다.

# 배열 요소 접근

자바스크립트에서는 아래와 같이 배열의 요소를 접근했습니다.

const arr = ['Thor', 'Hulk'];
arr[0]; // 'Thor'

타입스크립트에서는 인터페이스를 이용하여 아래와 같이 인덱싱 타입을 정의할 수 있습니다.

interface StringArray {
  [index: number]: string;
}

const arr: StringArray = ['Thor', 'Hulk'];
arr[0]; // 'Thor'

배열의 인덱스의 타입은 숫자이고 이 인덱스로 특정 요소를 접근했을 때 해당 요소의 타입은 string 이라는 것을 명시했습니다.

# 타입으로 배열 변경 제한하기

배열에 강한 타입을 적용함과 동시에 배열의 요소를 변경하지 못하게 하려면 아래와 같이 합니다.

interface ReadonlyStringArray {
  readonly [index: number]: string;
}

const arr: ReadonlyStringArray = ['Thor', 'Hulk'];
arr[2] = 'Capt'; // Error!