← Back to NOTES 🌰 ← Back to Effective TypeScript
타입스크립트는 명시된 타입이 없는 경우, 작성 시점에 가능한 값들의 집합을 유추하는 '타입 넓히기(widening)'를 수행한다. const 선언, 명시적 타입 구문, as const 등을 사용해 타입 넓히기 과정을 제어할 수 있으며, enum보다는 as const를 사용한 객체가 더 안전하다.
런타임 환경에서 변수는 유일한 값을 가지지만, 타입스크립트가 코드를 확인하는 시점에는 '가능한 값'들의 집합인 타입을 가진다. 타입스크립트는 명시된 타입이 없는 경우, 타입을 추론하는 과정에서 가능한 값들의 집합을 유추하는데 이를 '넓히기(widening)'라고 부른다.
자바스크립트 특성상 가능한 값의 범위가 매우 넓기 때문에 적합한 타입을 추론하는데 어려움이 있다. 타입스크립트는 작성자의 의도에 가장 적합해 보이는 타입으로 추측하지만, 개발자의 정확한 의도를 파악하지 못하기 때문에 생각과 다르게 동작할 가능성이 존재한다.
1. 명시적 타입 제공
2. const 사용
3. as const 단언문 사용