inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

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

468

jinbokk

작성한 질문수 2

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> 으로 작성을 해도 오류가 발생하지 않더라구요.

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

javascript typescript es6

답변 2

0

캡틴판교

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

질문하신 답변 드리면

type A = string

type B = number

type C = string | number

의 차이인거 같아요 :)

0

인프런 AI 인턴

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

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

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

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

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

TSLint

0

67

1

vscode eslint server 오류

0

82

1

안녕하세요. 기본타입- 튜플, 객체, 진위값 부분의 영상의 화면이 나오질 않습니다.

0

77

1

live server 설치 오류

1

373

2

강의 교안 pdf 는 따로 제공하지않나요?

0

287

2

npm i 설치 이유 문의

1

407

3

index.ts Delete &#x60;␍&#x60;eslintprettier/prettier 오류(빨간줄) 해결

2

289

3

vue 에서 jquery 사용 문제

1

696

2

TSLint 확장 프로그램은 현재 지원하지 않는다고 합니다.

1

501

2

강의 내용처럼 노란 밑줄이 작동하지 않아서 유사 질문들을 실행해보았는데요

1

544

1

section 3-1 JSdoc 타입이 추론되지 않아서 다음과 같이 수정했는데 이거 맞나요?

1

453

2

함수에 리턴 안됐다고 노란밑줄이 쳐져야하는데 없습니다

2

457

1

파일이 다른데 식별자가 중복되었다고 뜹니다.

1

445

2

빨간줄 에러 질문드립니다

1

489

2

마우스 갖다대면 리턴값 설명 나오는 거 질문드려요

1

358

2

js에서 @ts-check 적어도 체크하지 못하는 문제입니다

2

395

2

index.html에서 타입스크립트 콘솔 찍는 법 질문드립니다

1

567

2

섹션 1-3 추론 질문드립니다

1

355

2

왜 api쪽에는 왜 에러가 안나는지 궁금합니다.

1

325

2

const item1을 선언했을 때 타입을 선언해줘도 괜찮을까요?

1

391

1

전화번호부 타입선언

1

267

2

타입을 전역으로 분리

1

593

2

객체 선언 시 구분자는 쉼표, 세미콜론 모두 사용가능한건가요?

1

460

1

Git 관련 질문이 있습니다

1

672

2