logo hsb.horse
← Zur Snippets-Übersicht

Snippets

Uint32Array Hilfsfunktionen

Ein prägnanter TypeScript-Wrapper für `new Uint32Array`-Aufrufe. Unterstützt alle Konstruktor-Überladungen mit typsicheren Überladungsdefinitionen.

Veröffentlicht: Aktualisiert:

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 8

Implementierungsdetails

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.