コンテンツにスキップ

new Uint8Arrayをラップした生成関数を作る

WebCrypto APIなどバイナリを扱うAPIを触っていると、毎回 new Uint8Array を呼び出さなければいけなくて、億劫になってくる。

Uint8Arrayのコンストラクタ関数のインターフェースは維持しつつ、呼び出し用ユーティリティ関数を用意する

u8-array.ts
export function toU8Array(length: number): Uint8Array;
export function toU8Array(
array: ArrayLike<number> | ArrayBufferLike
): Uint8Array;
export function toU8Array(
buffer: ArrayBufferLike,
byteOffset?: number,
length?: number
): Uint8Array;
export function toU8Array(
arg1: number | ArrayLike<number> | ArrayBufferLike,
arg2?: number,
arg3?: number
): Uint8Array {
return typeof arg1 === "number"
? new Uint8Array(arg1)
: BYTE_LENGTH in arg1
? new Uint8Array(arg1, arg2, arg3)
: new Uint8Array(arg1);
}

オーバーロードを使って、コンストラクタ関数の4種類のインターフェースを満たすように実装するだけ