Item 42 모르는 타입의 값에는 any 대신 unknown을 사용하기
any
가 강력하면서 위험한 이유
any
가 강력하면서 위험한 이유어떠한 타입이든
any
타입에 할당 가능하다.any
타입은 어떠한 타입으로도 할당 가능하다.
unknown
를 any
대신 쓸 수 있다
unknown
를 any
대신 쓸 수 있다unknown
타입은 앞에서 언급한 any
의 첫 번째 속성은 만족하지만, 두 번째 속성은 만족하지 않는다.
(번외) never
은?
never
은?never
은 unknown
과 정반대다. any
의 첫 번째 속성은 만족하지 않지만, 두 번째 속성은 만족한다.
unknown
사용하기
unknown
사용하기어떠한 값이 있지만 그 타입을 모르는 경우에 unknown
을 사용하면 좋다.
unknown
타입을 사용하려면 as
타입 단언을 이용해 적절한 타입으로 변환하도록 강제해야 한다.
object
또는 {}
은 unknown
과 차이가 있다
object
또는 {}
은 unknown
과 차이가 있다object
또는 {}
를 사용하는 방법 역시 unknown
만큼 범위가 넓은 타입이지만, unknown
보다는 범위가 약간 좁다.
{}
타입은null
과undefined
를 제외한 모든 값을 포함한다.object
타입은 모든 비기본형(non-primitive) 타입으로 이뤄진다. 여기에는true
또는12
또는"foo"
가 포함되지 않지만 객체와 배열은 포함된다.
Key Points
unknown
타입이 도입되기 전에는 {}
가 더 일반적으로 사용되었지만, 최근에는 {}
를 사용하는 경우가 꽤 드물다.
정말로 null
, undefined
가 불가능하다고 판단되는 경우만 unknown
대신 {}
를 사용하면 된다.
Summary
unknown
은any
대신 사용할 수 있는 안전한 타입이다. 어떠한 값이 있지만 그 타입을 알지 못하는 경우라면unknown
을 사용하면 된다.사용자가 타입 단언문이나 타입 체크를 사용하도록 강제하려면
unknown
을 사용하면 된다.{}
,object
,unknown
의 차이점을 이해하자.
Last updated