# 타입 단언(Type Assertion)

타입 단언은 개발자가 해당 타입에 대해 확신이 있을 때 사용하는 타입 지정 방식입니다. 다른 언어의 타입 캐스팅과 비슷한 개념이며 타입스크립트를 컴파일 할 때 특별히 타입을 체크하지 않고, 데이터의 구조도 신경쓰지 않습니다.

# 타입 단언 기본 - as

타입 단언은 기본적으로 as 키워드를 이용해서 정의할 수 있습니다. 아래와 같은 코드가 있다고 합시다.

const name: string = 'Capt';

이 코드는 타입 표기 방식을 이용해 name 이라는 변수의 타입은 string 이라고 정의한 코드입니다. 이 코드에 타입 단언을 적용하면 다음과 같습니다.

const name = 'Capt' as string;

비주얼 스튜디오 코드에서 name 변수의 정보를 확인해 보면 동일하게 string으로 추론되는 것을 확인할 수 있습니다.

# 타입 단언은 언제 쓰는가?

타입 단언은 타입스크립트 컴파일러보다 개발자가 더 해당 타입을 잘 알고 있을 때 사용해야 합니다. 혹은, 자바스크립트 기반 코드에 점진적으로 타입스크립트를 적용할 때도 자주 사용됩니다. 예를 들어, 다음과 같은 자바스크립트 코드가 있다고 합시다.

// app.js
const capt = {};
capt.name = '캡틴';
capt.age = 100;

이 객체에 타입 표기 방식으로 타입을 정의하려고 하면 에러가 발생합니다.






 



interface Hero {
  name: string;
  age: number;
}

const capt: Hero = {}; // X. 오류 발생
capt.name = '캡틴';
capt.age = 100;

왜냐하면 capt 변수가 정의되는 시점에서 name, age 등의 속성이 정의되지 않았기 때문입니다. 기존에 운영하던 서비스의 코드가 위와 같다면 아래와 같이 코드를 변경하여 타입 오류를 해결할 수도 있습니다.

interface Hero {
  name: string;
  age: number;
}

const capt: Hero = {
  name: '캡틴',
  age: 100
};

하지만, 기존 코드의 변경 없이 as 키워드로 타입 문제를 해결할 수 있습니다.






 



interface Hero {
  name: string;
  age: number;
}

const capt = {} as Hero; // 오류 없음
capt.name = '캡틴';
capt.age = 100;

# 타입 단언에 대해 더 자세히 알고 싶다면?

더 친절하고 자세한 설명이 아래 책 13장에 적혀있습니다.

널 아님 보증 연산자 ! 등 타입 단언에 대해 더 깊게 공부해 보세요 😃

https://www.yes24.com/Product/Goods/119410497