logo hsb.horse
← 스니펫 목록으로 돌아가기

Snippets

TypeScript 배열 유틸리티

TypeScript 개발에서 자주 쓰는 배열 연산을 위한 타입 안전 유틸리티 모음. 빈 배열 생성, 청킹, null 필터링, 셔플을 다룹니다.

게시일: 수정일:

TypeScript 개발에서 자주 쓰는 배열 연산을 위한 타입 안전 유틸리티 함수들.

emptyArray: 지정한 크기의 빈 배열 생성

초기화, 플레이스홀더, 목 데이터 등에 쓸 특정 길이의 배열을 만든다.

function emptyArray(size: number): Array<undefined> {
return Array(size).fill(undefined);
}

chunkArray: 배열을 청크로 나누기

배열을 지정한 크기의 청크로 나눈다.

function chunkArray<T>(array: T[], size: number): T[][] {
if (size <= 0) return [];
return Array.from({ length: Math.ceil(array.length / size) }, (_, i) =>
array.slice(i * size, (i + 1) * size),
);
}

Array.from으로 필요한 청크 개수를 만들면서 원본 배열을 슬라이스한다.

사용 예시:

const numbers = [1, 2, 3, 4, 5, 6, 7];
const chunks = chunkArray(numbers, 3);
console.log(chunks);
// Result: [[1, 2, 3], [4, 5, 6], [7]]

filterNonNull: null과 undefined를 타입 안전하게 제거

API 응답 등에서 null 또는 undefined를 제거하면서 TypeScript 타입을 T | null에서 T로 좁힌다.

function filterNonNull<T>(array: Array<(T | null | undefined)>): Array<T> {
return array.filter((v): v is T => v != null);
}

unsafeShuffle: 배열을 무작위로 섞기

Fisher-Yates 알고리즘으로 배열을 섞는다. 원본 배열을 직접 수정하는 파괴적 연산이라는 점에 주의.

function unsafeShuffle<T>(array: T[]): T[] {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
return array;
}

실무 메모

이 스니펫은 typescript, javascript, utilities 주변에서 같은 조작이나 판정을 매번 다시 쓰고 싶지 않을 때 잘 맞는다. 작은 보조 단위로 빼 두면 호출부에서는 의도만 읽기 쉬워진다.

반대로 분기와 전제조건이 늘어나 책임이 커진다면, 하나의 스니펫에 전부 넣지 않는 편이 낫다. 절차와 helper를 나누거나 역할별로 쪼개 두는 편이 유지보수에 유리하다.