inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

유니온 제거 질문

해결된 질문

416

Hephaestus

작성한 질문수 10

1

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

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

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

function createDropdownItem<T>(item: Dropdown<T>) {
  const option = document.createElement('option');
  if (item.value) {
    option.value = item.value.toString();
    option.innerText = item.value.toString();
  }
  option.selected = item.selected;
  return option;
}

// NOTE: 이메일 드롭 다운 아이템 추가
emails.forEach(function (email) {
  const item = createDropdownItem<string>(email);
  const selectTag = document.querySelector('#email-dropdown');
  selectTag?.appendChild(item);
});

안녕하세요! 유니온 제게어 대해서 질문드립니다! 제가 유니온을 제거해 보려고 했는데 createDropdownItem() 함수에서 if 문을 쓰기 전에는 " 'T' 형식에 'toString' 속성이 없습니다 "라고 에러가 떴었는데 if 문을 추가하니 에러 표시가 사라졌습니다. 이렇게 코드를 작성해도 되는 걸까요? 아니면 if 문보다는 이후 강의에서 알려주신 extends로 제네릭을 제한하는 게 더 좋을까요?

es6 javascript typescript

답변 1

1

캡틴판교

안녕하세요, extends로 타입을 제한하시는게 더 타입 관점에서 안전하게 코딩하실 수 있습니다 :)

TSLint

0

77

1

vscode eslint server 오류

0

97

1

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

0

86

1

live server 설치 오류

1

400

2

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

0

294

2

npm i 설치 이유 문의

1

431

3

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

2

303

3

vue 에서 jquery 사용 문제

1

710

2

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

1

510

2

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

1

553

1

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

1

465

2

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

2

463

1

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

1

461

2

빨간줄 에러 질문드립니다

1

499

2

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

1

366

2

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

2

405

2

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

1

579

2

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

1

362

2

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

1

334

2

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

1

404

1

전화번호부 타입선언

1

275

2

타입을 전역으로 분리

1

604

2

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

1

462

1

Git 관련 질문이 있습니다

1

674

2