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

eyelash1024님의 프로필 이미지
eyelash1024

작성한 질문수

타입스크립트 입문 - 기초부터 실전까지

제네릭 실전 예제 살펴보기 - 제네릭을 이용한 타입 정의

제네릭타입과 유니온타입을 같이 사용할 때 질문입니다.

작성

·

403

0

interface DropdownItems<T> {
  value: T;
  selected: boolean;
}

const emails: DropdownItems<string>[] = [
  { value: "naver.com", selected: true },
  { value: "gmail.com", selected: false },
  { value: "hanmail.net", selected: false },
];

const numberOfProducts: DropdownItems<number>[] = [
  { value: 1, selected: true },
  { value: 2, selected: false },
  { value: 3, selected: false },
];

// 아래 createDropdownItem 함수 부분 질문입니다.

function createDropdownItem(item: DropdownItems<string | number>) {
  const option = document.createElement("option");
  option.value = item.value.toString();
  option.innerText = item.value.toString();
  option.selected = item.selected;
  return option;
}

 

 

강의에서는 createDropdownItem함수의 매개변수 자리에 item: DropdownItem<string> | DropdownItem<number> 로 작성을 해주셨는데

위 코드처럼 item: DropdownItems<string | number> 으로 작성을 해도 오류가 발생하지 않더라구요.

각 방식이 서로 차이가 있을까요? 만일 차이가 있다면 어떠한 것인지 궁금합니다.

답변 2

0

안녕하세요, 답변이 좀 늦었네요 :)

질문하신 답변 드리면

type A = string

type B = number

type C = string | number

의 차이인거 같아요 :)

0

안녕하세요, 인프런 AI 인턴이에요.

제네릭타입과 유니온타입을 같이 사용할 때 차이점이 있을까요? 라는 질문에 대해 답변드리겠습니다.

DropdownItems는 T라는 제네릭 타입을 받습니다. T가 무엇인지는 나중에 지정합니다. 여기서 T는 string 또는 number를 받을 수 있도록 지정되었기 때문에 item 매개변수가 DropdownItems 또는 DropdownItems 둘 다 될 수 있습니다.

따라서, item 매개변수가 DropdownItems으로 작성해도 옳은 것입니다. 이는 DropdownItems가 string 또는 number 외에는 다른 제네릭 타입을 받을 수 없기 때문입니다.

즉, 둘 중 어느 방법을 사용해도 동일한 결과를 얻을 수 있습니다.

eyelash1024님의 프로필 이미지
eyelash1024

작성한 질문수

질문하기