const fruits: string[] = ['apple', 'banana', 'cherry'];
const fruits: Array<string> = ['apple', 'banana', 'cherry'];
불변 객체로 지정하는 방법
const fruits: readonly string[] = ['apple', 'banana', 'cherry'];
const fruits2: ReadonlyArray<string> = ['apple', 'banana', 'cherry'];
const fruits3 = ['apple', 'banana', 'cherry'] as const;
fruits.push('durian'); // 컴파일 에러
원본 배열 변경
arr.push('a'); // 끝에 요소 추가
arr.pop(); // 끝에서 제거
arr.unshift('a'); // 앞에 추가
arr.shift(); // 앞에서 제거
arr.splice(n, m); // n번째 인덱스부터 m개 제거 (원본 변경)
새 객체 반환(원본 유지)
arr.slice(n); // n번째 인덱스부터 끝까지 추출
arr.slice(-1 * n); // 뒤에서 n개 추출
arr.slice(n, m); // n번째 인덱스부터 m개 추출
arr.concat(arr2); // arr와 arr2 병합
[...arr, ...arr2]; // 동일
내용물 변환
numbers.map(n => n * 2); // 각 요소 변환
numbers.filter(n => n > 2); // 조건에 맞는 요소만 추출
// reduce - 하나의 값으로 축약
numbers.reduce((sum, n) => sum + n, 0); // 모든 요소의 합
numbers.reduce((max, n) => Math.max(max, n)); // 최댓값 하나만
// flatMap - map + flat
[[1, 2], [3, 4]].flatMap(arr => arr.map(n => n * 2)); // [2, 4, 6, 8]
고정된 길이를 가진, 서로 다른 타입을 저장할 수 있는 배열
// 위치마다 타입 지정 (런타임에 수정 불가)
const tp: [string, number] = ['age', 25];
// readonly로 불변 객체 지정
const rtp: readonly [string, number] = ['age', 25];
rtp[0] = 'hello'; // 컴파일 에러