← Back to NOTES 🌰 ← Back to Effective TypeScript

← 아이템 10 - 객체 래퍼 타입 피하기

핵심 요약

타입스크립트는 객체 리터럴을 변수에 할당하거나 함수에 매개변수로 전달할 때 잉여 속성 체크를 수행하여 선언되지 않은 속성을 감지한다. 하지만 잉여 속성 체크는 구조적 타이핑과는 별도의 과정이며, 객체 리터럴이 아닌 경우나 임시 변수를 사용하는 경우에는 동작하지 않는다는 한계가 있다.

자세한 내용

잉여 속성 체크란?

객체 리터럴 할당 시 타입스크립트는 다음 사항을 확인한다:

  1. 해당 타입의 속성이 있는지
  2. 그 외의 속성은 없는지

잉여 속성 체크를 통해 오류를 검출하지만, 조건에 따라 동작하지 않아 구조적 타이핑과 혼란을 야기할 수 있다.

구조적 타이핑과의 차이

구조적 타이핑 관점에서는 잉여 속성이 있어도 오류가 발생하지 않아야 하지만, 잉여 속성 체크는 이를 방지한다.

잉여 속성 체크와 할당 가능 검사는 별도의 과정이라는 것을 이해해야 한다.

잉여 속성 체크의 동작 조건

동작하는 경우:

동작하지 않는 경우: