그래서 Array<string>하면 [key: number]: string이 되어 요소의 타입이 전부 string이 됩니다. 제네릭이 없었다면 다음과 같이 요소 타입별로 Array 타입을 다르게 선언해야 했을 것입니다.
interface StringArray {
[key: number]: String,
length: number,
//기타 속성들
}
interface BooleanArray {
[key: number]: BooleanArray,
length: number,
//기타 속성들
}
제네릭 덕분에 타입 간에 중복되는 부분을 없애고 하나의 타입을 여러 방법으로 재사용할 수 있게 되었습니다.