프로그래밍/Typescript

TypeScript의 고급 타입: 튜플 완벽 가이드

shimdh 2025. 4. 9. 08:41
728x90

튜플은 TypeScript에서 배열과 유사한 구조를 가지지만, 각 요소의 타입이 고정되어 있는 특별한 데이터 유형입니다. 이 블로그 포스트에서는 튜플의 기본 개념, 선언 및 사용 예시, 다양한 데이터 유형을 다루기 위한 활용 방법, 읽기 전용 속성 추가하기에 대해 자세히 알아보겠습니다.

1. 튜플의 기본 개념

  • 정해진 길이: 튜플은 특정한 길이를 가지며, 각 인덱스에 대해 지정된 타입이 존재합니다. 예를 들어, 튜플의 길이가 2라면, 두 개의 요소가 반드시 존재해야 하며, 각 요소는 미리 정의된 타입을 따라야 합니다.
  • 타입 안정성: 각 요소의 타입이 명확히 정의되어 있기 때문에, 코드 작성 시 발생할 수 있는 오류를 줄일 수 있습니다. 이는 특히 대규모 프로젝트에서 코드의 가독성과 유지 보수성을 높이는 데 큰 도움이 됩니다.

2. 튜플 선언 및 사용 예시

튜플을 선언하는 방법은 매우 간단합니다. 아래의 예시를 통해 기본적인 튜플 선언과 값 접근 방법을 살펴보겠습니다.

// 기본적인 튜플 선언
let person: [string, number] = ['Alice', 30];

// 값 접근하기
console.log(person[0]); // 'Alice'
console.log(person[1]); // 30

// 잘못된 값 할당 (타입 에러 발생)
person[0] = 42; // Error: Type 'number' is not assignable to type 'string'.

위의 예시에서 person이라는 변수는 문자열과 숫자를 포함하는 두 개의 요소를 가진 튜플로 선언되었습니다. 첫 번째 요소는 이름(문자열)이고 두 번째 요소는 나이(숫자)입니다. 이처럼 튜플을 사용하면 서로 다른 타입의 데이터를 하나의 구조로 묶어 관리할 수 있습니다.

3. 여러 종류의 데이터를 다루기 위한 활용

튜플을 사용하면 서로 다른 데이터 유형들을 함께 묶어 사용할 수 있어 매우 유용합니다. 예를 들어, 위치 정보를 저장할 때 경도와 위도를 튜플로 표현할 수 있습니다.

// 위치 정보 저장하기 (경도와 위도)
let coordinates: [number, number] = [37.7749, -122.4194];

// 함수에서 튜플 반환하기
function getCoordinates(): [number, number] {
    return [35.6895, 139.6917]; // 도쿄의 경도 및 위도 반환
}

const tokyoCoords = getCoordinates();
console.log(tokyoCoords); // [35.6895, 139.6917]

여기서 coordinates라는 변수를 통해 위치 정보를 관리하고 있으며, getCoordinates() 함수는 경도와 위도를 포함하는 튜플을 반환합니다. 이러한 방식으로 튜플을 활용하면 다양한 데이터 조합을 쉽게 처리할 수 있습니다.

4. 읽기 전용 속성 추가하기

TypeScript에서는 읽기 전용 속성을 설정하여 값을 변경하지 못하도록 할 수 있습니다. 이는 데이터의 불변성을 유지하는 데 유용합니다.

type ReadOnlyPoint = readonly [number, number];

const pointA: ReadOnlyPoint = [10, 20];
// pointA[0] = 15; // Error: Index signature in type 'readonly [number, number]' only permits reading.

위 코드에서 ReadOnlyPoint라는 읽기 전용 튜플을 생성하여 불변성을 유지하고 있습니다. 이를 통해 데이터의 무결성을 보장할 수 있습니다.

결론

고급 타입인 튜플은 TypeScript에서 강력한 도구로 작용하며, 복잡한 데이터 구조를 보다 안전하고 명확하게 표현할 수 있게 해줍니다. 이를 통해 개발자는 더욱 직관적이고 유지 보수가 쉬운 코드를 작성할 수 있습니다. 튜플을 적절히 활용하면 프로그램 내 다양한 상태나 설정값들을 효율적으로 관리할 수 있으므로, 적극적으로 사용하는 것이 좋습니다! 튜플의 활용은 데이터 구조를 명확히 하고, 코드의 안정성을 높이는 데 큰 기여를 할 것입니다.

728x90