본문 바로가기

IT/JavaScript

TypeScript 타입 단언

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