인프런 커뮤니티 질문&답변

0401luna님의 프로필 이미지
0401luna

작성한 질문수

한 입 크기로 잘라먹는 타입스크립트(TypeScript)

인덱스드 엑세스 타입

인덱스드 엑세스 배열 타입 이해가 안가는 부분이있어요

해결된 질문

작성

·

133

0

선생님 안녕하세요.

인덱스드 엑세스 배열 타입 이해가 안가는 부분이있어서요

강의 후반 예제 중에

 

type PostList = {
  title: string;
  content: string;
  author: {
    id: number;
    name: string;
    age: number;
  };
}[];

이 타입을 배열로 선언한 이유는

 

아래 포스트라는 객체가

post[0],post[1],post[2] .... 이런식으로

포스트가 많아지는 경우를 위해 배열로 만들었다고 생각했는데

image.png

 

실제 함수 호출부

image.png

printAuthorInfo(author: PostList[2]["author"])

에서 PostList[넘버 파라미터] 를 0으로 하던 2번으로 하던 전부 동일한결과가 출력되는데

 

실제 post객체는 강의 중

하나만 만들었으므로

post[0]만 작동되어야 할거같은데 2 번 3번 4번....

어디서부터 이해를 잘못한건지

전부 똑같이 출력되는이유가 궁금해요..

 

 

 

 

 

답변 1

0

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 이정환입니다.

인덱스드 엑세스 타입의 인덱스로 숫자를 넣으면

말씀하신대로 어떤 숫자값을 넣던 모두 동일한 결과가 나옵니다.

그리고 그 결과는 해당 배열의 원소 타입이 됩니다.

 

배열에서의 인덱스드 엑세스 타입은

인덱스에 해당하는 값의 타입을 추론하는 기능이 아니기 때문입니다.

 

마치 post[1]의 1은 typeof 1로 작용하여

post[number]처럼 작용하는 것과 비슷하다고 생각하시면 됩니다.

 

다음 링크로 이동하셔서 핸드북의 아래 그림에 나온 부분을 다시 살펴보시면 좋을 것 같습니다!

https://ts.winterlood.com/4be60954-bc0e-4458-a58d-c0b367eb8ef4

image.png

 

0401luna님의 프로필 이미지
0401luna

작성한 질문수

질문하기