article thumbnail image
Published 2022. 5. 13. 16:10

타입 단언이란?

타입스크립트 핸드북에서는 타입 단언에 대해 대략 이렇게 이야기하고 있다. :

  • 가끔은 타입스크립트보다 코드 작성자 자신이 어떤 값에 대해 더 정확하게 파악하고 있는 상황이 생길 수 있다.
    • 예를 들어 document.getElementById를 사용할 경우, 타입스크립트는 이게 어떤 HTMLElement를 반환할 거라는 것 정도만 알 수 있다. 개발자가 지정한 특정 아이디를 가진 요소는 늘 HTMLCanvasElement일 수 있는데 타입스크립트는 이것까지는 알 수 없다. 따라서 이런 상황에서는 타입을 좀 더 구체적으로 잡고 가기 위해 다음과 같이 타입 단언을 사용할 수 있다.
      const myCanvas = document.getElementById("main_canvas") as HTMLCanvasElement;
  • 타입 단언은 이런 상황에서 컴파일러에게 "나 스스로 무슨 일을 하고 있는 건지 알고 있으니까 날 믿어~"라고 말을 하는 것이다.
  • 아무때나 사용할 수 있는 건 아니고, 조금 더 구체적으로 또는 조금 덜 구체적으로 타입을 정의하려고 할 때만 사용할 수 있으며, 문자열을 number 타입으로 단언한다든지 하는 것은 불가능하다.
  • 컴파일러에 의해 제거되므로 코드의 런타임 동작에는 영향을 미치지 않는다.

 

문법

value as Type

 

valueType 타입으로 정의

 

타입 단언 사용 시 주의할 점

1. 결과가 조금 더 모호한 쪽에 타입 단언을 사용할 것

2. 코드 결과에 조금 더 가까운 타입을 단언할 것

 

cf.) Type annotation(타입 선언)

참고: https://www.tutorialsteacher.com/typescript/type-annotation

 

const value: Type = 어쩌구저쩌구;

 

valueType 타입임을 명시하기 위해 사용

→ 타입 단언과 달리 컴파일러가 타입 체크를 수행하기 때문에 안전한 코드를 작성할 수 있음.

즉 타입 선언을 사용하면 안전하며 가독성 측면에서도 좋다.

타입 단언과 마찬가지로 컴파일러에 의해 제거되므로 코드의 런타임 동작에는 영향을 미치지 않는다.

'dev-log > TS' 카테고리의 다른 글

제네릭 컴포넌트(generic component)  (0) 2022.04.03
복사했습니다!