반응형
확실한 할당 어서션
TypeScript는 확실한 할당 검사용으로 nonnull 어서션을 적용하는 특별한 상황에 사용할 특수 문법을 제공합니다.
let userId: string
userId.toUpperCase(); // 'userId' 변수가 할당되기 전에 사용되었습니다.ts(2454)
이 에러 검출은 TypeScript가 제공하는 멋진 서비스입니다.
userId 변수를 선언했지만 값을 할당하는 걸 깜빡 잊은 채 대문자 변환 작업을 수행했습니다.
TypeScript가 검출해주지 않았다면 런타임 에러가 발생했을 것입니다.
하지만 코드가 다음과 같다면 어떨까요?
let userId: string
fetchUser()
userId.toUpperCase(); // 'userId' 변수가 할당되기 전에 사용되었습니다.ts(2454)
function fetchUser() {
userId = globalCache.get('userId')
}
우연하게 적중률 높은 캐시를 개발했다고 가정해 봅니다.
따라서 fetchUser를 호출하면 항상 userId가 올바로 정의됨을 보장합니다.
하지만 TypeScript는 정적 검사만으로는 이 사실을 알아채지 못하므로 이전과 같은 에러를 발생시켰습니다.
이런 상황에선 확실한 할당 어서션을 이용하여 userId를 사용하는 시점엔 이 변수가 반드시 할당되어 있을 것임을 TypeScript에 알려줄 수 있습니다.
let userId!: string
fetchUser()
userId.toUpperCase(); // OK
function fetchUser() {
userId = globalCache.get('userId')
}
그러나 타입 어서션, nonnull 어서션과 마찬가지로 확실한 할당 어서션을 너무 자주 사용하고 있다면 무언가 잘못되어가는 중일 수 있습니다.
반응형
'👶 TypeScript' 카테고리의 다른 글
프로토타입 안전하게 확장하기 (0) | 2023.01.22 |
---|---|
이름 기반 타입 흉내내기 (0) | 2023.01.22 |
탈출구 - Nonnull 어서션 (0) | 2023.01.22 |
탈출구 - 타입 어서션 (0) | 2023.01.21 |
조건부 타입 - 내장 조건부 타입들 (0) | 2023.01.21 |