← Back to NOTES 🌰 ← Back to Effective TypeScript

← 아이템 3 - 코드 생성과 타입이 관계없음을 이해하기

핵심 요약

자바스크립트는 덕 타이핑(duck typing) 기반이며, 타입스크립트는 이를 모델링하기 위해 구조적 타이핑을 사용한다. 구조적 타이핑에서 타입은 '봉인(sealed)'되어 있지 않고 '열려(open)' 있어, 선언된 속성 외에 추가 속성을 가질 수 있다. 이는 테스트 작성과 추상화에 유리하지만 예상치 못한 결과를 낳을 수 있다.

자세한 내용

덕 타이핑과 구조적 타이핑

"만약 어떤 새가 오리처럼 걷고, 헤엄치고, 꽥꽥거리는 소리를 낸다면 나는 그 새를 오리라고 부를 것이다"

자바스크립트는 본질적으로 덕 타이핑 기반이며, 타입스크립트는 이를 모델링하기 위해 구조적 타이핑을 사용한다.

구조적 타이핑의 특징

구조적 타이핑의 문제점

함수를 작성할 때 호출에 사용되는 매개변수의 속성들이 매개변수의 타입에 선언된 속성만을 가질 거라 생각하기 쉽지만, 타입 시스템에서는 이를 표현할 수 없다. 타입은 항상 열려 있다.

구조적 타이핑의 장점

테스트 작성 시 유리

라이브러리 간 의존성 분리