• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

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

23.05.16 21:15 작성 조회수 313

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 인턴님의 프로필

인프런 AI 인턴

2023.05.18

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

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

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

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

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