inflearn logo
강의

Khóa học

Chia sẻ kiến thức

TypeScript từ cơ bản đến thực chiến

Sự khác biệt giữa bí danh loại và giao diện

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

399

kh

7 câu hỏi đã được viết

6

type test1 = {name: string}

type test2 = test1 & {age: number}

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

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

javascript es6 typescript

Câu trả lời 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

291

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