[typescript] 배열의 요소 타입 유효성 검사하기

TypeScript에서는 배열을 사용할 때 각 요소의 타입을 검사하여 유효성을 확보할 수 있습니다. 이를 통해 코드의 안정성을 높이고 예기치 않은 오류를 방지할 수 있습니다. 이번 포스트에서는 TypeScript를 사용하여 배열 요소의 타입을 유효성 검사하는 방법에 대해 자세히 알아보겠습니다.

기본 배열 타입

TypeScript에서 배열을 사용할 때는 해당 배열이 특정 타입의 요소들로 이루어져 있음을 명시할 수 있습니다. 예를 들어, number 타입의 요소로 이루어진 배열은 다음과 같이 정의할 수 있습니다.

let numbers: number[] = [1, 2, 3, 4, 5];

위의 예제에서 numbers 배열은 number 타입의 요소들로만 구성되어야 합니다. 하지만, 이러한 방법은 배열의 모든 요소가 동일한 타입이어야 함을 보장하지는 않습니다.

타입 가드를 활용한 유효성 검사

이러한 경우, 타입 가드를 활용하여 각 요소의 타입을 개별적으로 검사할 수 있습니다. 다음은 Array.every 메서드를 사용하여 모든 요소가 특정 타입임을 검사하는 방법입니다.

function isEven(num: number): boolean {
    return num % 2 === 0;
}

let numbers: number[] = [1, 2, 3, 4, 5];

let allEven: boolean = numbers.every(isEven);

위의 예제에서 isEven 함수는 숫자가 짝수인지를 검사하는 타입 가드 함수입니다. numbers.every 메서드는 배열의 모든 요소가 isEven 함수의 조건을 만족하는지를 검사하고, 그 결과를 allEven 변수에 할당합니다.

사용자 정의 타입 가드

때로는 내장된 타입 가드만으로는 충분하지 않을 수 있습니다. 이때는 사용자 정의 타입 가드를 만들어서 배열의 요소 타입을 보다 세밀하게 검사할 수 있습니다.

function isStringArray(arr: any[]): arr is string[] {
    return arr.every(item => typeof item === 'string');
}

let strings: any[] = ['hello', 'world'];

if (isStringArray(strings)) {
    // strings 배열은 string 타입의 요소들로만 구성됨
} else {
    // strings 배열에 string이 아닌 다른 타입의 요소가 있음
}

위의 예제에서 isStringArray 함수는 배열의 모든 요소가 string 타입인지를 검사하여 arr is string[] 형태로 반환합니다. 따라서 isStringArray 함수를 사용하면 해당 배열이 string 타입의 요소로만 구성되어 있는지를 보다 세밀하게 검사할 수 있습니다.

결론

TypeScript에서는 배열의 요소 타입을 유효성 검사하여 코드의 안정성을 높일 수 있습니다. 내장된 타입 가드 및 사용자 정의 타입 가드를 활용하여 배열 요소의 타입을 보다 정확하게 검사할 수 있으며, 이를 통해 유연하고 안정적인 코드를 작성할 수 있습니다.

이상으로 TypeScript 배열 요소의 타입 유효성 검사에 대한 포스트를 마치겠습니다. 감사합니다!