inflearn logo
강의

講義

知識共有

TypeScript入門 - 基礎から実践まで

タイプエイリアスとインターフェースの違い

타입 확장 불가능에 대한 질문입니다.

399

kh

投稿した質問数 7

6

type test1 = {name: string}

type test2 = test1 & {age: number}

const test3: test2 = { name: 'd', age: 33 }

찾아보니 제가 보기에는 위 코드가 interface 처럼 확장이 되는 것 같던데, 제가 쓴 코드는 확장의 개념이 맞는지 아닌지 질문드립니다.

javascript es6 typescript

回答 3

14

captain

안녕하세요 kh님, 좋은 질문 남겨주셨네요! :) 적어주신 코드는 인터섹션(&)을 이용한 타입 별칭 확장입니다.

const test3: test2 = { name: 'd', age: 33 }

위 코드는 "타입 별칭 test2는 test1과 { age: number }를 모두 만족하는 또 하나의 타입으로 정의한다"는 의미입니다. 바로 뒤 강좌에서 인터섹션 연산자를 이용한 타입 정의 방법에 대해서 다루고 있으니 보시면 이해하시는 데 도움이 될거에요 :)

그래서 kh님께서 질문하신 내용처럼 이것도 인터페이스랑 똑같이 확장되는 것 같은데? 라고 생각하실 수 있을 것 같아요. 그런데 엄밀히 따지고 보면 test1의 타입에 인터섹션을 이용해서 타입을 추가로 정의한 것이지 test1의 타입을 extends 로 상속 받아 확장하는 개념은 아닙니다. 강의에서 말씀 드린 확장은 타입 간에 extends 키워드를 이용하여 타입 범위를 넓히는 것을 의미했던 건데 관련된 설명이 부족해서 헷갈리셨을 것 같습니다. 이후 강의 업데이트 진행할 때 해당 내용을 좀 더 자세히 보완하도록 하겠습니다. 좋은 피드백 주셔서 감사합니다 kh님 :)

아참 또 "확장"이라는 관점에서는 동일한 이름으로 여러 가지 타입을 선언하여 타입 정의를 병합(Declaration Merging)하는 것도 포함될 수 있는데요. 관련 내용은 처음 배우시는 분들 입장에서 괜히 어렵게 느껴지실 수 있을 것 같아 별도로 언급하지 않았습니다. 혹시 관심 있으시면 관련 문서들 안내드릴 테니 한번 살펴보시면 좋을 것 같아요 :)

1

kh

자세한 답변 감사드립니다 ^^

0

devleeee

저도 궁금한 질문이었는데 미리 질문해주신 분 덕분에 감사히 잘 배웠습니다~

TSLint

0

67

1

vscode eslint server 오류

0

82

1

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

0

77

1

live server 설치 오류

1

375

2

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

0

287

2

npm i 설치 이유 문의

1

407

3

index.ts Delete `␍`eslintprettier/prettier 오류(빨간줄) 해결

2

290

3

vue 에서 jquery 사용 문제

1

697

2

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

1

501

2

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

1

544

1

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

1

454

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

356

2

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

1

326

2

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

1

391

1

전화번호부 타입선언

1

267

2

타입을 전역으로 분리

1

594

2

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

1

460

1

Git 관련 질문이 있습니다

1

672

2