[typescript] 타입스크립트에서의 배열 타입 변환 방식

타입스크립트는 정적 타입을 지원하기 때문에 배열의 요소를 다른 타입으로 변환하는 일이 종종 있습니다. 이러한 작업은 원래 배열을 수정하는 것이 아니라 새로운 배열을 생성하여 기존 배열의 값을 변환합니다. 이 글에서는 타입스크립트에서 배열의 타입을 변환하는 다양한 방법을 알아보겠습니다.

1. map 함수를 사용한 변환

가장 일반적인 방법은 map 함수를 사용하여 배열의 각 요소를 새로운 값으로 변환하는 것입니다.

예를 들어, number 타입의 배열을 string 타입의 배열로 변환하려면 다음과 같이 할 수 있습니다.

const numbers: number[] = [1, 2, 3, 4, 5];
const strings: string[] = numbers.map(String);

위의 예제에서 map 함수를 사용하여 numbers 배열의 각 요소를 String 함수를 통해 string 타입으로 변환한 새로운 배열을 생성했습니다.

2. 타입 단언을 사용한 변환

때로는 배열의 타입을 명시적으로 지정하여 변환할 수 있습니다. 이를 타입 단언(Type Assertion) 이라고 합니다.

예를 들어, any 타입의 배열을 string 타입의 배열로 변환하려면 다음과 같이 할 수 있습니다.

const anyArray: any[] = [1, 'two', true];
const stringArray: string[] = anyArray as string[];

위의 예제에서 anyArray 배열을 string 배열로 변환하기 위해 as string[]를 사용하여 타입 단언을 했습니다.

3. 변환 유틸리티 함수 사용

마지막으로, 복잡한 타입 변환을 하게 될 경우에는 변환하는 데 도움이 될 수 있는 유틸리티 함수를 작성하여 사용할 수 있습니다.

예를 들어, 다음과 같이 map 함수와 타입 단언을 결합한 유틸리티 함수를 작성할 수 있습니다.

function mapAndAssert<T, U>(arr: T[], fn: (x: T) => U): U[] {
  return arr.map(fn) as U[];
}

// 사용 예
const numbers: number[] = [1, 2, 3, 4, 5];
const strings: string[] = mapAndAssert(numbers, String);

위의 예제에서 mapAndAssert 함수는 map 함수와 타입 단언을 결합하여 원하는 타입으로의 변환을 지원합니다.

결론

타입스크립트에서 배열 타입 변환을 위해 map 함수, 타입 단언, 그리고 유틸리티 함수를 사용할 수 있습니다. 이를 통해 안전하고 효율적으로 배열의 타입을 변환할 수 있습니다. 이러한 방법들을 익혀두면 코드를 더욱 깔끔하게 작성할 수 있을 것입니다.


참고 자료: