Type Assertion
은 타입을 강요할 때 사용합니다.
자바스크립트에서 아래 함수는 반환값이 any
타입으로 지정됩니다. 따라서 반환값을 담은 result
변수도 any
타입을 가집니다. 그래서 문자열에서 사용할 수 있는 내장 함수들(length와 같은)을 사용할 수 없습니다.
function onlyString() {
return 'hello';
}
const result = onlyString();
result.length //에러
따라서 항상 문자열을 반환하는 함수라는 것이 확실하다면 as
키워드를 사용하거나 변수 앞에 <>
기호를 사용하여 Type Assertion
을 할 수 있습니다.
function onlyString() {
return 'hello';
}
const result = onlyString();
console.log((result as string).length); //5
console.log((<string>result).length); //5
함수 뒤에 또는 변수뒤에 !
키워드를 사용하여 무조건 null이 아님을 나타낼 수도 있습니다.
function findNumbers(): number[] | undefined {
return undefined;
}
//const result = findNumbers()!;
const result = findNumbers();
numbers!.push(1);
하지만 정말 확신할 수 있는 경우에만 사용하는 것이 좋으며, 100%를 장담할 수 없다면 사용하지 않는편이 좋습니다. 예상치 못한 오류로 프로그램이 중단될 수 있습니다.
const error: any = 5;
(error as Array<number>).push(1); //에러