강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của noh55242574
noh55242574

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

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

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

Viết

·

369

6

type test1 = {name: string}

type test2 = test1 & {age: number}

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

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

javascriptes6typescript

Câu trả lời 3

14

captain님의 프로필 이미지
captain
Người chia sẻ kiến thức

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

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

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

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

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

1

kh님의 프로필 이미지
kh
Người đặt câu hỏi

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

0

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

Hình ảnh hồ sơ của noh55242574
noh55242574

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

Đặt câu hỏi