[typescript] 타입 가드를 사용하여 가변성 문제 해결하기 예제 코드

타입스크립트에서는 타입 가드(Type Guards)를 사용하여 코드에서 발생할 수 있는 가변성 문제를 해결할 수 있습니다. 타입 가드는 런타임에 변수가 특정한 타입인지 확인하여 타입 안정성을 제공하는데 도움을 줍니다.

가변성 문제를 예제 코드를 통해 살펴보겠습니다.

// 가변성 문제가 발생하는 예제
function printAll(strs: string[] | number[]) {
  for (let i = 0; i < strs.length; i++) {
    console.log(strs[i].toUpperCase()); // Error: Property 'toUpperCase' does not exist on type 'string | number'
  }
}

위 코드에서 strs 파라미터는 string 배열 또는 number 배열일 수 있습니다. 하지만 strs[i].toUpperCase() 코드에서는 toUpperCase 메서드를 호출하는데, string 배열이외의 타입이 되었을 경우 에러가 발생합니다.

이를 해결하기 위해 타입 가드를 사용하여 타입을 체크하는 함수를 작성해봅시다.

// 타입 가드를 사용하여 문제 해결
function isStringArray(strs: string[] | number[]): strs is string[] {
  return typeof strs[0] === "string";
}

function printAll(strs: string[] | number[]) {
  if (isStringArray(strs)) {
    for (let i = 0; i < strs.length; i++) {
      console.log(strs[i].toUpperCase()); // No Error
    }
  }
}

isStringArray 함수는 strsstring 배열인지 확인하여 boolean을 반환합니다. 이후 printAll 함수에서 isStringArray를 통해 타입 체크를 한 후 string 배열에만 접근하여 에러가 발생하지 않도록 합니다.

이렇게 타입 가드를 사용하여 가변성 문제를 해결할 수 있습니다.

결론

타입 가드를 사용하여 가변성 문제를 해결할 수 있습니다. 타입 가드를 통해 더욱 안전하고 명확한 코드를 작성할 수 있습니다.

참고: