CHATER9 타입 제한자
9.1 top 타입
top 타입은 시스템에서 가능한 모든 값을 나타내는 타입이다. 모든 다른 타입이 top인 위치에 제공될 수 있으며, 즉 모든 타입은 top 타입에 할당할 수 있다.
9.1.1 any 다시 보기
any 타입은 모든 타입의 위치에 제공 될 수 있다는 점에서 top 타입 처럼 작동할 수 있지만, TS가 해당 값에 대한 할당 가능성 또는 멤버에 대해 타입 검사를 수행하지 않도록 명시적을 지시한다는 문제점을 가지고 있다.
이러한 안정성 부족은 TS의 타입 검사기를 건너뛰려고 할 때 유용하지만, 타입 검사를 비활성화하면 해당 값에 대한 TS의 유용성이 줄어든다.
예를 들어 아래의 name.toUpperCase() 호출은 확실히 문제가 되지만, name이 any로 선언되었기 때문에 TS는 타입 오류를 보고하지 않고 결국 런타임에서 걸러진다.
function greetComedian(name: any) {
// 타입 오류 없음
console.log(`Hello, ${name.toUpperCase()}!`);
}
greetComedian({ name: "asd" });
//runtime error
// Error: name.toUpperCase is not a function
어떤 값이 될수 있음을 나타내려면 unknown타입이 훨씬 안전하다고 한다.
9.1.2 unknown
TS에서 unkown 타입은 진정한 top 타입이라고 하는데, 모든 객체를 unknown 타입의 위치로 전달할 수 있다는 점에서 any타입과 유사하다.
둘의 주요 차이점으로는 TS에선 unknown 타입의 값을 더 엄격하게 제한한다는 점이다.
- TS는 unknown 타입 값의 속성에 직접 접근할 수 없다.
- unknown 타입은 top 타입이 아닌 타입에는 할당할 수 없다.
아래처럼 unknown 타입 값의 속성에 접근하려고 시도하면 에러가 난다.
function greetComedian(name: unknown) {
console.log(`Hello, ${name.toUpperCase()}!`);
// Error: Object is of type 'unknown'.
}
'항해99 플러스 > TypeScript 스터디' 카테고리의 다른 글
[TypeScript 스터디] 4주차 CHAPTER8 Class (1) | 2025.02.27 |
---|---|
[TypeScript 스터디] 3주차 CHAPTER5 ~ 7 (0) | 2025.02.18 |
[TypeScript 스터디] 2주차 CHAPTER3 ~ 4 (1) | 2025.02.13 |
[TypeScript 스터디] 1주차 CHAPTER1 ~ 2 (1) | 2025.02.02 |