Bei der Arbeit mit Binärdaten in WebCrypto API und ähnlichen Kontexten ruft man new Uint32Array recht häufig auf. Diese lange Syntax jedes Mal zu schreiben wird mühsam, also habe ich einen kürzeren Wrapper erstellt.
Code
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);}Nutzungsbeispiele
Mit angegebener Länge initialisieren
const arr = initUint32(8);// Uint32Array(8) [0, 0, 0, 0, 0, 0, 0, 0]Aus Array konvertieren
const arr = initUint32([1, 2, 3, 4]);// Uint32Array(4) [1, 2, 3, 4]Teilansicht eines ArrayBuffer erstellen
const buffer = new ArrayBuffer(32);const arr = initUint32(buffer, 8, 4);// Uint32Array(4) [0, 0, 0, 0] - 4 Elemente ab Byte 8Implementierungsdetails
Mit TypeScript-Funktionsüberladungen bietet dies typsicheren Zugriff auf alle drei Uint32Array-Konstruktor-Muster.
- Eine Zahl übergeben, um ein Array dieser Länge zu erstellen
- Ein array-ähnliches Objekt übergeben, um es zu konvertieren
- ArrayBuffer mit Offset übergeben, um eine Teilansicht zu erstellen
Interne Type Guards bestimmen den Argumenttyp und leiten zum passenden Konstruktoraufruf weiter.
hsb.horse