타입 단언(Type Assertion)이란?
다른 언어의 타입 캐스팅과 비슷한 개념. 개발자가 강제로 타입을 지정하는 행위라고 보면 됩니다. 타입 단언이 사용되면 이에 대해 타입스크립트 컴파일은 해당 부분에 대한 타입 체크를 진행하지 않고 구조도 신경쓰지 않습니다.
타입 단언은 `as` 명령어로 정의됩니다.
const something: any = 'hello';
// 컴파일러에게: 이건 string이야!
const strLength = (something as string).length;
위에서 타입 단언을 하지 않았다면 .length 부분에서 에러가 났을 겁니다.
사용 이유
타입 단언은 강제로 타입을 설정하는 것이기 에러가 발생할 위험이 존재합니다. 그렇기 때문에 타입 단언은 타입스크립트 컴파일러보다 개발자가 더 해당 타입을 잘 알고 있을 때 사용해야 합니다. 타입 단언은 자바스크립트 기반 코드에 점진적으로 타입스크립트를 적용할 때도 자주 사용됩니다.
// 기존 자바스크립트 코드
const capt = {};
capt.name = '캡틴';
capt.age = 100;
위와 같은 자바스크립트 코드를 타입스크립트로 수정한다고 가정합니다. 그럼 아래와 같은 형식은 올바른 형태일까요?
interface Hero {
name: string;
age: number;
}
const capt: Hero = {}; // X. 오류 발생
capt.name = '캡틴';
capt.age = 100;
오류가 납니다. 왜냐하면 capt는 Hero라는 타입으로 표기되었으므로 {} 이런 형태는 존재할 수 없습니다. name과 age key값이 없기 때문이조. 그래서 이런 코드에서 타입 단언을 이용해 타입스크립트 방식을 적용할 수 있습니다.
interface Hero {
name: string;
age: number;
}
const capt = {} as Hero; // 오류 없음
capt.name = '캡틴';
capt.age = 100;
참고 자료
타입 단언 | 타입스크립트 핸드북
타입 단언(Type Assertion) 타입 단언은 개발자가 해당 타입에 대해 확신이 있을 때 사용하는 타입 지정 방식입니다. 다른 언어의 타입 캐스팅과 비슷한 개념이며 타입스크립트를 컴파일 할 때 특별
joshua1988.github.io
'백엔드 > Node.js' 카테고리의 다른 글
[TS] 타입 체킹 - 덕 타이핑(Duck Typing, Structural SubTyping)이란? (0) | 2025.04.09 |
---|---|
[TS] 타입가드(Type Guard)란? (0) | 2025.04.09 |
[TS] 유니온 타입(Union Type)과 인터섹션 타입(Intersection Type) (0) | 2025.04.09 |
[TS] 타입스크립트 typeof 와 keyof (0) | 2025.04.09 |
[NodeJS]이벤트 루프 동작 이해하기 (0) | 2025.03.19 |