해결된 질문
작성
·
133
0
선생님 안녕하세요.
인덱스드 엑세스 배열 타입 이해가 안가는 부분이있어서요
강의 후반 예제 중에
type PostList = {
title: string;
content: string;
author: {
id: number;
name: string;
age: number;
};
}[];
이 타입을 배열로 선언한 이유는
아래 포스트라는 객체가
post[0],post[1],post[2] .... 이런식으로
포스트가 많아지는 경우를 위해 배열로 만들었다고 생각했는데
실제 함수 호출부
printAuthorInfo(author: PostList[2]["author"])
에서 PostList[넘버 파라미터] 를 0으로 하던 2번으로 하던 전부 동일한결과가 출력되는데
실제 post객체는 강의 중
하나만 만들었으므로
post[0]만 작동되어야 할거같은데 2 번 3번 4번....
어디서부터 이해를 잘못한건지
전부 똑같이 출력되는이유가 궁금해요..
답변 1
0
안녕하세요 이정환입니다.
인덱스드 엑세스 타입의 인덱스로 숫자를 넣으면
말씀하신대로 어떤 숫자값을 넣던 모두 동일한 결과가 나옵니다.
그리고 그 결과는 해당 배열의 원소 타입이 됩니다.
배열에서의 인덱스드 엑세스 타입은
인덱스에 해당하는 값의 타입을 추론하는 기능이 아니기 때문입니다.
마치 post[1]의 1은 typeof 1로 작용하여
post[number]처럼 작용하는 것과 비슷하다고 생각하시면 됩니다.
다음 링크로 이동하셔서 핸드북의 아래 그림에 나온 부분을 다시 살펴보시면 좋을 것 같습니다!
https://ts.winterlood.com/4be60954-bc0e-4458-a58d-c0b367eb8ef4