Type assertion
타입스크립트는 명확한 타입 표기 및 타입 추론을 통해 타입을 판단한다. 하지만 때에 따라서 명확한 타입 표기가 불가능하거나 개발자가 임의의 타입을 값에 할당하고 싶은 경우도 존재한다. 이러한 경우 Type assertion을 활용하여 타입을 단언한다.
interface Something {
do: number | string;
}
위 코드의 경우 do는 number 혹은 string의 타입을 가질 수 있다.
경우에 따라서 do 라는 값을 사용할 때 as를 활용하여 타입을 단언할 수 있다.
/**
* Add month function
* @param {Date} target
* @param {number} value
* @returns {Date | null}
*/
export function addMonth<T extends Date | null>(target: T, value: number): T {
if (!target) return null as T;
const added = new Date(target.getTime());
added.setMonth(added.getMonth() + value);
return added as T;
}
위의 코드에서는 파라미터로 넘어온 target의 값이 Date혹은 null타입을 가질 수 있다.
따라서 addMonth함수에서 값을 리턴할 때 가능한 타입 역시 Date 혹은 null이 가능하다. 이러한 상황에서 타입스크립트는 타입을 추론하기 어렵기 때문에 개발자가 확실한 타입을 단언해줘야 한다.
'IT > JavaScript' 카테고리의 다른 글
if를 통한 명확하고 확실한 조건 처리 (0) | 2023.04.14 |
---|---|
Object, Array each 함수 (0) | 2023.03.28 |
TypeScript 타입 추론 (0) | 2023.01.08 |
axios (0) | 2022.10.08 |
async / await (0) | 2022.09.30 |