inflearn logo
강의

講義

知識共有

一口サイズに切って食べるTypeScript (TypeScript)

インデックスド・アクセス・タイプ

인덱스드 엑세스타입 실무질문

10

namastae1125663

投稿した質問数 26

0

안녕하세요 강사님



interfce Post {

...

author: {

id:number;

name:string;

};

...

}

이렇게 예제가있어서


매개변수 타입에 Post['author']를 주셨는데요


실무에서는 위의방식처럼하는지 아니면


interface Author {

id : number;

name : string;

}


interface Post {

...

author : Author
}

이런식으로 타입을 나누는지 실무기준에서 어떻게쓰나 궁금합니다

typescript

回答 2

0

winterlood

안녕하세요 나마스테님 이정환입니다.

실무에서는 팀별로 또는 개인별로 다른 기준을 선택하기 때문에 딱 어떤것이 정답이다 정해드리기는 어려운데요, 보통은 AI 인턴의 답변대로 Author 타입이 다른 곳에서도 자주 사용된다면 분리하는게 좋다고 생각합니다.

그런데 만약 Comment 라는 타입이 추가로 있고, 해당 타입 내에도 별도의 Author 타입(Post의 Author와 프로퍼티가 다름)이 존재할 경우 이럴때에는 또 Author 타입을 분리해 사용하기 애매해 질 수 있습니다!

PS. AI 인턴이 완벽한 답변을 적어주어 제가 딱히 코멘트를 덧 붙일 점이 없네요 ㅠㅠㅠ

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 나마스테님.

실무에서는 Author처럼 여러 곳에서 재사용되거나 독립적인 의미를 가진 타입이라면 별도로 분리하는 경우가 많습니다.

interface Author {
  id: number;
  name: string;
}

interface Post {
  // ...
  author: Author;
}

반면 author 타입이 Post에서만 사용되고 별도로 재사용할 필요가 없다면, 질문처럼 Post['author']를 활용할 수 있습니다.

function printAuthorInfo(author: Post['author']) {
  // ...
}

Post['author']Post 타입의 author 속성 타입을 그대로 가져오는 방식입니다. 따라서 Postauthor 구조가 변경되면 매개변수 타입에도 자동으로 반영되어 타입 중복을 줄일 수 있습니다.

정리하면 다음과 같습니다.

  • 여러 곳에서 재사용하거나 도메인상 독립적인 개념이라면 Author 타입을 별도로 선언
  • 특정 타입의 속성을 그대로 참조하고 싶거나 중복 선언을 피하고 싶다면 Post['author'] 사용
  • 강의 예제에서는 인덱스드 엑세스 타입의 기능을 설명하기 위해 Post['author'] 방식을 사용한 것

강사님의 유사한 답변은 아래 게시글에서 확인하실 수 있습니다.

질문있습니다.

해당 답변에서도 Author 타입을 처음부터 분리해 사용하는 것이 가능하며, 실제 코드의 효율성보다는 TypeScript 기능 활용을 보여주기 위한 예제라는 점을 설명하고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

모든 ts파일이 컴파일 되지 않습니다.(해결됨.)

0

91

4

핸드북 light/dark mode 관련 이슈가 있는 것 같습니다.

0

70

1

제네릭 클래스 핸드북 페이지가 undefined라고 나옵니다.

0

76

2

적절한 타입 찾기 React.ChangeEvent<HTMLInputElemen>

0

74

2

outDir 옵션 추가 후 컴파일 오류 질문

0

185

1

호출 시그니처 질문

0

110

2

서로소 유니언 타입이 discriminated union과 동의어 인가요?

0

129

2

조건부타입소개 중 함수오버로딩 활용 시 인수의타입과 함수의 반환값의 타입이 깨지는 문제

0

99

1

할인쿠폰 관련하여

0

227

2

프론트엔드에서의 인터페이스활용

0

139

2

안녕하세요 이정환님!

0

123

1

Node.js 설치에 관한 질문입니다.

0

128

2

함수 타입 호출 시그니처

0

90

1

35강. 모듈 보강은 라이브러리 파일을 직접 편집해야 하나요?

0

95

2

인터페이스 문법이 있는데 타입 별칭 문법은 왜 있나요?

0

152

4

마우스 호버 시 정보

0

132

2

vite으로 리액트 빌드하기를 업데이트해주세요.

1

114

2

타입가드를 만들어 사용하는 이유가 궁금합니다.

0

126

2

섹션 12가 너무 어려운데... 정상이겠죠..?

0

171

2

선생님.. 알고리즘도 강의해주시면안되나요

0

140

2

선생님은 어떻게 이런걸 아세요?

0

164

1

type: module

0

138

2

7:17초 업캐스팅 질문이있습니다!

0

104

1

슈퍼타입질문

1

104

2