언어/타입스크립트

TypeScript any unknown

realtrynna 2022. 11. 12. 19:57

any

any는 어떠한 타입도 할당받을 수 있는 타입이다.

컴파일 과정에서 타입 검사가 되지 않으며 any를 사용하는 타입스크립트는 소위 애니스크립트라고도 불린다.

 

사용자로부터 받은 데이터 또는 외부 라이브러리 사용 시 응답 값이 동적일 경우 종종 사용한다.

타입스크립트는 데이터의 자료형을 명시해 타입 안정성을 보장받기 위해 사용 하는데 any를 사용한다면 자바스크립트와 다를 게  없으므로 최대한 지양해야 한다.

 

넘버 타입의 사용 가능한 toFixed 메서드를 문자열 타입에 사용하려고 하니 에러가 출력된다. 

이처럼 변수에 올바른 자료형을 명시한다면 코드 작성 단계에서 에러를 발견할 수 있다.

 

 

any 타입을 할당하게 되면 컴파일러는 language라는 변수가 모든 자료형이 될 수 있다고 추론한다.

이런 경우 코드 작성 단계에서 에러가 출력되지 않고 파일을 실행해야 비로소 에러가 검출된다.

개발 시에는 문제가 없을 수도 있지만 추후 잠재적 문제가 발생할 수 있다. 

 

 

unknown

타입스크립트 3버전부터 추가된 타입이다.

단어 의미와 동일하게 "타입을 모른다"라는 의미로 해석된다.

any와 마찬가지로 모든 자료형을 허용하지만 할당된 값의 자료형을 알 수 없으므로 관련 메서드를 사용할 수 없다.

 

 

 

타입 가드를 통해 컴파일러에게 타입을 알려주어 타입 안정성을 보장받을 수 있다.

 

 

 

any와 unknown의 차이

any는 코드 작성 단계에서 에러를 발견할 수 없고 파일이 실행되야 결과를 알 수 있다.

반면 unknown은 자료형을 모른다는 의미로 관계 메서드를 사용할 경우 코드 작성 단계에서 에러가 검출된다.

 

추가로 unknown은 자신과 any를 제외한 다른 타입에 할당할 수 없다.

 

 

 

예외 케이스로 타입 가드assertion(as)을 사용해 할당할 수 있다.

 

  

 

 

참고 자료

https://devblogs.microsoft.com/typescript/announcing-typescript-3-0-rc-2/#the-unknown-type

https://developer-talk.tistory.com/198