타입스크립트의 튜플 타입과 배열의 차이점
2024. 11. 2. 00:10ㆍ유용한 정보
728x90
반응형
타입스크립트의 튜플 타입과 배열의 차이점
타입스크립트에서 튜플(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
반응형
'유용한 정보' 카테고리의 다른 글
타입스크립트에서 any 타입을 최소화하는 방법 (0) | 2024.11.04 |
---|---|
타입스크립트의 구조적 타이핑의 이점 (0) | 2024.11.03 |
타입스크립트의 제네릭 기능과 실전 적용 (0) | 2024.11.01 |
타입스크립트의 타입 시스템 작동 방식 (1) | 2024.11.01 |
타입스크립트와 자바스크립트의 차이점 (2) | 2024.11.01 |