타입스크립트에는 타입추론을 덮어쓰는 기능이있다. 이 기능을 타입어서션(type assertion)이라고 한다.
* 타입스크립트 컴파일러는 코드를 바탕으로 타입을 추론해준다. 그렇게 추론된 타입은 대부분 맞긴하지만, 상황에 따라서
컴파일러보다 정확한 타입을 알아야 할 때가 있다. 이런 경우, 타입어서션을 통해 컴파일러에 타입을 전달해 줄 수 있다.
타입어서션은 컴파일러에게 "내가 타입이 이거라는 걸 보장할 테니, 날 믿어줘!!!!!!!" 라고 하는 것과 같다.
사용방법
타입어서션을 사용하는 방법에는 두 가지가 있다. 첫 번째는 as를 사용한다.
다른 하나는 <> 을 사용하는 방법이다
컴파일에러가 되는 타입어서션
타입어서션을 사용하면 제한없이 타입을 덮어쓸수 있는가에 대해서는 그렇지는 않다. 예를들어 number형을 string형으로 하는 타입어서션은 컴파일 에러가 발생한다.
이 에러는 number형을 string형으로 하는것은 잘못되었다, 서로 공통되는 부분이 너무 적다? 라는 내용이다.
이처럼 타입어서션은 컴파일러의 타입 추론을 덮어쓸수는 있지만, 무작정 형 변환을 할 수 는 없게 되어있다.
그럼에도 자신이 쓴 타입어서션이 올바르다고 생각하는 경우에는 unknown타입을 경유해서 위와 같은 에러를 발생하지 않게 할 수는 있다.
끝으로.
타입어서션은 컴파일러의 타입 추론을 덮어쓸 수 있는 매우 강력한 도구임에는 틀림없다. 그렇기 때문에 프로그래머는 타입 어서션에 따른 버그를 발생하지 않도록 주의해서 사용할 필요가 있다. 타입에 관해서는 가능하다면, 컴파일러의 타입 추론을 믿는게 안전하겠지만,
어쩔수없이 사용해야 할 경우에만 사용하도록 하자.
참고
https://typescriptbook.jp/reference/values-types-variables/type-assertion-as
'타입스크립트' 카테고리의 다른 글
타입스크립트 기본(2) 함수편 (0) | 2023.03.12 |
---|---|
타입스크립트 기본(1) (0) | 2023.03.12 |