TYPESCRIPT
[Typescript] 타입 단언 (Type Assertion)
seominki
2024. 9. 23. 10:08
타입 단언은 타입스크립트의 타입 추론에 기대지 않고 개발자가 직접 타입을 명시하여 타입을 강제로 주입하는 것을 의미합니다.
타입 단언의 장점
- 컴파일러에게 더 정확한 타입 정보 제공: 자동으로 추론되지 않는 타입을 명시적으로 알려줌
- 유욘한 타입 변환: 값의 타입을 원하는 대로 변환하거나 좁힐 수 있음
- 타입 안정성 향상: 개발자가 해당 값이 특정 타입임을 확신 할 수있는 경우 컴파일러에 타입 오류 방지 가능
사용법
const num = 3 as number;
interface Member {
name: string;
id: string;
age: number;
}
const member1: Member = {}; // 빈 객체로 선언하게 되면 에러가 남
const merber2 = {} as Member; // 빈 객체로 선언했지만 객체에 들어갈 속성은 Member 인터페이스 속성이라고 타입스크립트 컴파일러에 말해 주는 효과
타입 단언을 사용해야 할 상황
- 컴파일러가 타입을 추론할 수 없을 때
const someVal: any = "문자열입니다";
const strLength: number = (someVal as string).length;
- 외부 API나 라이브러리에서 데이터를 가져올 경우
interface UserData {
id: string;
name: string;
}
const rs: any = fetchUserData();
const user = rs as UserData;
- DOM 조작 시 (구체적인 타입으로 좁혀야 할 때)
const inputEl = document.getElementById("user-id") as HTMLInputElement;
- 타입을 확신하는 상황
function getStrLength(value: string | number): number {
if ((value as string).length) {
return (value as string).length;
} else {
return value.toString().length;
}
}
타입단언 사용 시 주의사항
타입단언은 타입스크립트 컴파일러보다 타입에 대한 정보가 확신될 경우 사용하는것이 좋으며 단언을 하게되면 컴파일러측에서는 사전에 에러방지를 못하게 됩니다.