
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
'언어 > 타입스크립트' 카테고리의 다른 글
TypeScript 인터페이스와 타입의 차이 (0) | 2022.11.17 |
---|---|
TypeScript 사용 이유와 컴파일 과정 (0) | 2022.11.03 |
TypeScript const assertion (0) | 2022.11.01 |
TypeScript 유틸리티 타입 (0) | 2022.05.29 |
TypeScript 타입 가드 (0) | 2022.05.28 |