tech.junha.kr

노트/TypeScript

Type Assertion (타입 단언)

작성 수정

타입 단언은 타입스크립트의 타입 추론보다 개발자가 해당 값의 타입을 더 잘 알고 있다고 확신할 때 사용하는 기능입니다. 일반적으로 타입스크립트는 타입을 자동으로 추론하지만, 특정 상황에서는 개발자가 더 구체적인 정보를 가지고 있을 때가 있습니다.

타입 단언을 사용하는 대표적인 상황

  1. 동적 데이터 처리 (예: API 응답): API에서 받아온 데이터는 기본적으로 타입스크립트가 정확한 타입을 추론할 수 없습니다. 하지만 개발자가 그 데이터 구조를 정확히 알고 있을 때, 타입 단언을 사용해 컴파일러에 명확한 타입 정보를 전달할 수 있습니다.

    const response = await fetch('/api/user');
    const data = await response.json() as User;  // 타입 단언
    console.log(data.name);  // User 타입으로 처리
  2. DOM 요소 조작: document.querySelector와 같은 DOM API는 반환 타입을 Element | null로 추론합니다. 하지만, 개발자가 특정 요소가 HTMLInputElement와 같은 구체적인 타입임을 알고 있을 경우 타입 단언을 사용해 해당 타입을 컴파일러에 전달할 수 있습니다.

    const inputElem = document.querySelector('#username') as HTMLInputElement;
    inputElem.value = 'John Doe';  // HTMLInputElement 타입으로 처리
  3. 구체적인 상속 타입: 상속 구조에서, 기본 클래스가 아닌 구체적인 서브클래스를 다룰 때도 타입 단언이 유용합니다. 예를 들어, Animal 타입으로 반환된 객체가 실제로는 Dog 타입이라는 것을 개발자가 알고 있을 때 단언을 통해 이를 명확히 할 수 있습니다.

    const pet = getPet();  // 타입스크립트는 Animal로 추론
    (pet as Dog).bark();  // 개발자가 Dog 타입임을 확신할 때

핵심 정리

  • 타입 단언은 타입스크립트가 정확하게 추론할 수 없는 상황에서 개발자가 더 구체적인 타입 정보를 제공할 때 사용됩니다. 하지만 잘못 사용하면 런타임 오류로 이어질 수 있기 때문에, 정확한 타입을 알고 있을 때만 신중하게 사용해야 한다.