logo hsb.horse
← Voltar para o índice de snippets

Snippets

Funções auxiliares Uint32Array

Um wrapper TypeScript conciso para chamadas `new Uint32Array`. Suporta todas as interfaces do construtor com sobrecargas de função com segurança de tipos.

Publicado: Atualizado:

Ao trabalhar com dados binários em WebCrypto API e contextos similares, você acaba chamando new Uint32Array com bastante frequência. Escrever essa sintaxe longa toda vez fica tedioso, então criei um wrapper mais curto.

Código

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);
}

Exemplos de uso

Inicializar com comprimento especificado

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

Converter de array

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

Obter uma visualização de parte do ArrayBuffer

const buffer = new ArrayBuffer(32);
const arr = initUint32(buffer, 8, 4);
// Uint32Array(4) [0, 0, 0, 0] - 4 elementos a partir do byte 8

Pontos de implementação

Usando sobrecargas de função TypeScript, isso fornece acesso type-safe aos três padrões do construtor Uint32Array.

  • Passe um número para criar um array desse comprimento
  • Passe um objeto array-like para convertê-lo
  • Passe ArrayBuffer com offset para criar uma visualização parcial

Type guards internos determinam o tipo do argumento e desviam para a chamada do construtor apropriada.