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

Snippets

Uint32Array 헬퍼 함수

`new Uint32Array` 호출을 간결하게 만드는 TypeScript 래퍼 함수입니다. 오버로드를 사용하여 생성자의 모든 인터페이스를 지원합니다.

게시일: 수정일:

WebCrypto API 등에서 바이너리 데이터를 다루다 별면 new Uint32Array를 자주 호출하게 됩니다. 매번 긴 구문을 적는 건 귀찮아서, 간결하게 쓸 수 있는 래퍼를 만들었습니다.

코드

function initUint32(length: number): Uint32Array;
function initUint32(array: ArrayLike<number> | ArrayBufferLike): Uint32Array;
function initUint32(
buffer: ArrayBufferLike,
byteOffset?: number,
length?: number,
): Uint32Array;
function initUint32(
arg1: number | ArrayLike<number> | ArrayBufferLike,
arg2?: number,
arg3?: number,
): Uint32Array {
return typeof arg1 === "number"
? new Uint32Array(arg1)
: "byteLength" in arg1
? new Uint32Array(arg1, arg2, arg3)
: new Uint32Array(arg1);
}

사용 예시

지정한 길이로 초기화

const arr = initUint32(8);
// Uint32Array(8) [0, 0, 0, 0, 0, 0, 0, 0]

배열에서 변환

const arr = initUint32([1, 2, 3, 4]);
// Uint32Array(4) [1, 2, 3, 4]

ArrayBuffer의 일부를 뷰로 가져오기

const buffer = new ArrayBuffer(32);
const arr = initUint32(buffer, 8, 4);
// Uint32Array(4) [0, 0, 0, 0] - 8번째 바이트부터 4개 요소

구현 포인트

TypeScript 함수 오버로드를 사용하여 Uint32Array 생성자의 세 가지 호출 패턴을 타입 안전하게 구현했습니다.

  • 숫자를 전달하면 해당 길이의 배열을 생성
  • 배열형 객체를 전달하면 변환
  • ArrayBuffer와 오프셋을 전달하면 부분 뷰를 생성

낷부의 타입 가드로 인자의 종류를 판별하고, 적절한 생성자 호출로 분기합니다.