타입스크립트의 튜플 타입과 배열의 차이점

2024. 11. 2. 00:10유용한 정보

728x90
반응형

타입스크립트의 튜플 타입과 배열의 차이점

타입스크립트에서 튜플(Tuple)배열(Array)은 비슷해 보이지만, 중요한 차이점이 있습니다. 튜플과 배열은 데이터의 모음을 다루지만, 길이, 타입의 다양성, 데이터의 구조적 제약 측면에서 다릅니다. 튜플은 더 엄격하고 고정된 데이터 구조를 정의할 때 유용하며, 배열은 같은 타입의 여러 데이터를 유연하게 처리하는 데 적합합니다.

타입스크립트에서 튜플(Tuple)과 배열(Array)의 차이점 - 튜플의 고정된 길이와 다양한 타입, 배열의 유연한 길이와 동일한 타입
타입스크립트에서 튜플(Tuple)과 배열(Array)의 차이점 - 튜플의 고정된 길이와 다양한 타입, 배열의 유연한 길이와 동일한 타입


1. 길이와 구조

  • 튜플: 고정된 길이를 가지며, 각 요소의 타입이 명시적으로 정의됩니다. 즉, 튜플은 미리 정의된 특정 개수의 요소를 포함하며, 각 요소의 위치에 따라 타입이 다를 수 있습니다.
  let tuple: [string, number] = ['Alice', 25]; // 첫 번째는 문자열, 두 번째는 숫자

위 코드에서 tuple은 정확히 두 개의 요소를 가져야 하며, 첫 번째 요소는 문자열, 두 번째 요소는 숫자여야 합니다.

 

  • 배열: 배열의 길이는 가변적이며, 동일한 타입의 데이터를 다루는 것이 일반적입니다. 배열에는 얼마든지 많은 요소를 추가하거나 삭제할 수 있습니다.
  let array: number[] = [1, 2, 3, 4, 5]; // 모든 요소가 숫자 타입

위 배열은 숫자를 여러 개 포함하며, 요소의 개수가 자유롭게 변경될 수 있습니다.


2. 타입의 다양성

  • 튜플: 튜플은 서로 다른 타입의 요소를 포함할 수 있습니다. 각 요소의 타입과 순서가 중요하며, 이를 통해 고정된 구조를 모델링할 수 있습니다.
  let coordinates: [number, number, string] = [10, 20, "north"]; // 숫자와 문자열 혼합

위 예시에서는 좌표와 방향을 표현하는 튜플로, 첫 번째와 두 번째 요소는 숫자, 세 번째 요소는 문자열로 정의되어 있습니다.

 

  • 배열: 배열은 보통 동일한 타입의 요소들로 이루어집니다. 배열 내에서는 요소들의 타입이 모두 동일한 경우가 많아, 특정 타입의 데이터 모음을 처리하는 데 적합합니다.
  let names: string[] = ['John', 'Jane', 'Doe']; // 모든 요소가 문자열

 

반응형


3. 타입 안전성

  • 튜플: 튜플은 타입 안전성이 매우 높습니다. 각 요소의 타입과 순서가 엄격하게 정의되어 있기 때문에, 튜플의 구조를 벗어나는 값을 할당하려고 하면 컴파일 시 오류가 발생합니다.
  let person: [string, number] = ['John', 30];
  person = [30, 'John']; // 오류: 타입과 순서가 맞지 않음

 

  • 배열: 배열에서는 동일한 타입의 요소가 저장되지만, 각 요소의 순서는 중요하지 않습니다. 다만, 배열 내의 모든 요소가 동일한 타입을 가져야 하므로 타입 안정성은 어느 정도 보장됩니다.


4. 선언 방식

  • 튜플: 튜플은 선언 시 각 요소의 타입과 순서를 명시합니다. 고정된 수의 요소와 그 위치에 따른 타입이 명확하게 정의됩니다.
  let user: [string, number] = ['Alice', 30]; // 첫 번째는 문자열, 두 번째는 숫자

 

  • 배열: 배열은 동일한 타입의 요소들을 다루는 자료 구조로, [] 기호를 사용해 선언하며, 배열 안의 모든 요소가 동일한 타입을 가집니다.
  let scores: number[] = [80, 90, 85]; // 모든 요소가 숫자 타입

 

728x90


5. 사용 사례

  • 튜플: 튜플은 서로 관련된 여러 값을 하나의 단위로 묶을 때 유용합니다. 특히 고정된 수의 데이터를 다룰 때 적합하며, 좌표, 날짜, 키-값 쌍 등을 표현하는 데 자주 사용됩니다.
  let rgb: [number, number, number] = [255, 0, 0]; // RGB 색상 값
  let address: [string, number] = ['Main St', 101]; // 도로명과 건물 번호

 

  • 배열: 배열은 동일한 타입의 데이터를 연속적으로 저장할 때 유용합니다. 특히 목록이나 리스트 형식의 데이터를 다룰 때 적합하며, 데이터의 길이가 변동될 가능성이 있는 경우 배열을 사용하는 것이 좋습니다.
  let shoppingList: string[] = ['milk', 'bread', 'eggs']; // 쇼핑 목록


6. 유연성 vs. 엄격성

  • 튜플: 튜플은 덜 유연하지만 더 엄격한 구조를 가지기 때문에, 정확한 데이터 구조를 표현할 때 유리합니다. 각 요소의 타입과 순서를 엄격하게 강제하기 때문에, 타입 안정성이 높은 코드를 작성할 수 있습니다.
  • 배열: 배열은 더 유연하지만, 그만큼 구조적 제약이 적습니다. 배열은 동적으로 데이터를 추가하거나 제거할 수 있어, 동적인 데이터 컬렉션을 다룰 때 적합합니다.


결론

튜플배열은 각기 다른 상황에서 유용하게 사용됩니다. 튜플은 서로 다른 타입의 요소를 고정된 순서와 개수로 묶을 때 유리하며, 특히 복잡한 데이터 구조를 다룰 때 강력한 타입 안전성을 제공합니다. 반면, 배열은 동일한 타입의 데이터를 유연하게 관리할 수 있어, 동적 데이터 리스트나 컬렉션을 처리하는 데 적합합니다. 각각의 특성과 차이점을 잘 이해하고 프로젝트의 요구에 맞는 타입을 선택하는 것이 중요합니다.

728x90
반응형