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를 나누거나 역할별로 쪼개 두는 편이 유지보수에 유리하다.
hsb.horse