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 8Pontos 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.
hsb.horse