TypeScript 타입 시스템 뜯어보기: 타입 호환성
김병묵 토스 · 토스 기술 블로그
AI 핵심 요약
TypeScript의 구조적 서브타이핑은 필요한 프로퍼티를 갖춘 객체를 별도의 상속 선언 없이 사용할 수 있게 하지만, 추가 프로퍼티나 오타가 놓칠 수 있다는 부작용도 있다. 컴파일러의 `checker.ts`와 관련 GitHub PR을 살펴보면, 객체 리터럴을 함수에 직접 전달할 때는 fresh object로 간주해 excess property 검사를 적용하고, 변수에 담긴 객체에는 일반적인 구조적 호환성을 허용한다. 이 예외는 함수가 사용하지 않는 데이터에 대한 오해와 프로퍼티 오타를 줄이기 위한 절충안이다. 필요에 따라 index signature로 추가 프로퍼티를 허용하거나 branded type으로 호환을 제한할 수 있다.
- TypeScript의 구조적 서브타이핑은 상속 선언보다 객체가 가진 프로퍼티를 기준으로 호환성을 판단한다.
- 객체 리터럴을 함수에 바로 전달하면 excess property 검사가 적용되어, 대상 타입에 없는 프로퍼티나 오타를 잡아낸다.
- 객체 리터럴을 변수에 먼저 담으면 freshness가 사라져 추가 프로퍼티가 있어도 구조적으로 호환될 수 있다.
- 추가 프로퍼티를 허용하려면 index signature를 사용할 수 있고, 타입 간 구분을 강제하려면 branded type을 고려할 수 있다.
소개
타입호환성은 무엇이며 왜 필요할까요? 타입호환이 지원되지 않는 경우가 존재한다는 것을 아셨나요? 평소 익숙했던 개념들에 대해 질문을 던져가며 TypeScript 타입 시스템에 관해 심도있게 알아보고자 합니다.
비슷한 학습 자료
컨퍼런스 당근 밋업
내 타입스크립트 코드가 이렇게 느릴 리 없어! | 2024 당근 테크 밋업
컨퍼런스 당근 밋업
타입스크립트로 개발하면서 점점 느려지는 코드 추론 속도 때문에 고민했던 적 있으신가요? 시간이 지남에 따라 코드베이스가 커졌으니 자연스러운 수순이라고 생각할 수 있어요. 그런데 혹시 잘못 작성한 타입 때문에 타입 추론이 느려지고 있었다면요? 이 세션에서는 잘못된 타입이 타입스크립트 추론 속도를 어떻게 저하시키는지 살펴보고, 타입 추론의 병목 지점을 진단하고 해결할 수 있는 방법을 소개해요. 🥕 영상을 보고 당근에 관심이 생기셨다면 채용 공고를 확인해보세요! https://about.daangn.com/jobs/
프론트엔드 프로그래밍 언어
컨퍼런스 엔지니어링데이 2025
infer, never만 보면 두려워지는 당신을 위한 고급 TypeScript
컨퍼런스 엔지니어링데이 2025
네이버 사내 기술 교류 행사인 NAVER ENGINEERING DAY 2024(5월)에서 발표되었던 세션을 공개합니다. [발표 내용] TypeScript의 타입 추론 원리를 타입 이론과 순서론에 근거하여 학습 실전 라이브러리 개발에서 풀 법한 문제 풀이 [대상] TypeScript 고급 사용자 라이브러리 개발 / 오픈소스 참여 등을 생각하시는 분 [기초 / 고급 / 응용] 00:00 ~ 31:09 기초타입이론 32:29 ~ 46:05 고급타입추론 46:06 ~ 1:12:03 응용문제
웹 개발 프로그래밍 언어