간혹 특정 변수에 어떤 타입이 사용될 지 알 수 없을 경우,
사용하기에 용이한 지정이 있는데, 이번 시간 unknown 타입에 대해 알아보자.
any 타입이랑 뭐가 다른거야?
any 타입
let typeInput: any
typeInput = 5
typeInput = "Hello"
unknown 타입
let typeInput: unknown
typeInput = 5
typeInput = "Hello"
위 any 타입과 unknown 타입을 비교하면 크게 차이가 없을 것이다.
그러나 이렇게 정의하면 엄연히 둘의 차이가 존재한다.
- any 타입은 어떤 타입들이 들어오든지 모두 받아준다.
- unknown 타입은 어떤 타입이 들어올지 몰라서 일단 알 수 없는 상태로 지정한다.
둘이 다르다는 결정적 증거
any의 경우 어떠한 변수에 할당을 받아도 허용 해주지만, unknown은 어떠한 타입인지 모르기 때문에 string 타입 변수에 할당 받기에 논리적으로 옳지가 않다.
unknown 타입의 적절한 사용법
let typeInput: unknown
let typeString: string
typeInput = 5
typeInput = "Hello"
if(typeof typeInput === "string") {
typeString = typeInput
}
typeof 키워드를 지정하여 typeInput 변수가 unknown이지만 코드 상에서 많은 로직이 돌아간 뒤 string이 될 것을 확신한 경우,
if 조건문을 통해 string 변수에 할당을 받게 할 수가 있어진다.
🤔 그래도 사실..
사실 해당 변수가 어떠한 값들이 들어올 지 미리 예상되는 코드를 작성하고 있다면 간단하게 union 타입을 지정하여
string | number 형식으로 짜는게 코드 가독성에 더 효율적이다. |
unkonwn은 말 그대로 이 변수가 어떠한 타입이 들어올지 감이 안잡힐 경우 사용하는게 정석이다.