-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
제네릭타입과 유니온타입을 같이 사용할 때 질문입니다.
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> 으로 작성을 해도 오류가 발생하지 않더라구요.
각 방식이 서로 차이가 있을까요? 만일 차이가 있다면 어떠한 것인지 궁금합니다.
답변을 작성해보세요.
0
장기효(캡틴판교)
지식공유자2023.06.02
안녕하세요, 답변이 좀 늦었네요 :)
질문하신 답변 드리면
type A = string
type B = number
type C = string | number
의 차이인거 같아요 :)
0
인프런 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>
즉, 둘 중 어느 방법을 사용해도 동일한 결과를 얻을 수 있습니다.
답변 2