타입 단언(type assertion)이란?

타입 단언(type assertion)은 타입스크립트의 타입 추론에 기대하지 않고 개발자가 직접 타입을 명시하여 해당 타입으로 강제하는 것을 의미합니다.

타입 단언 방법

아래 코드에서는 person 객체에 Profile 인터페이스를 타입 단언하여 name과 age 속성을 정의하는 코드입니다.

person은 빈 객체로 초기화 했기 때문에 name과 age 속성이 없어 person.name, person.age와 같이 속성에 접근하려고 하면 타입 에러가 발생합니다.

이것을 타입 단언을 통하여 해결할 수 있습니다. 변수 뒤에 as를 붙이면 타입단언을 할 수 있으며, person 객체 타입을 Profile 인터페이스로 타입 단언하여 name과 age 속성을 정의할 수 있도록 하였습니다.

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

const person = {};

// 타입 단언을 통해 person를 Profile 인터페이스로 타입 단언합니다.
(person as Profile).name = "jon";
(person as Prfile).age = 20;

타입 단언의 문법

타입 단언은 as 키워드를 붙여 사용합니다.

타입 단언은 숫자, 문자열, 객체 등 원시 값 뿐만 아니라 변수나 함수의 호출 결과에도 사용할 수 있습니다.

아래 코드에서 getNumber의 반환 타입은 any이지만 num 변수는 타입단언에 의해 number이 됩니다.

fuction getNumber(num) {
	return num;
}

let num = getNumber("100") as number;

타입 단언의 중첩

타입 단언은 아래 코드와 같이 충첩하여 여러 번 사용이 가능합니다.

중첩된 타입 단언에서는 최종 선언된 타입이 해당 코드의 타입으로 정해집니다.