Microsoft/TypeScript

Update `TypedArray` constructors to disallow invalid `(typedArray, byteOffset, byteLength)`

Open

#44,191 opened on May 20, 2021

 (0 comments) (1 reaction) (0 assignees)TypeScript (13,395 forks)batch import
BugDomain: lib.d.tsHelp Wanted

Repository metrics

Stars
 (108,860 stars)
PR merge metrics
 (PR metrics pending)

Description

lib Update Request

Configuration Check

My compilation target is ES2020 and my lib is the default.

Missing / Incorrect Definition

TypedArray constructors allows passing (TypedArray, byteOffset, byteLength), when only byteOffset and byteLength are only used when passing in an ArrayBuffer

Sample Code

const buf = new ArrayBuffer(1024);
const uint8 = new Uint8Array(buf, 16, 128)
// No TS error, even though the `16` and `32` are completely ignored
const subUint8 = new Uint8Array(uint8, 16, 32)
subUint8.byteLength // Oops, this is 128, not 32.

Documentation Link

MDN on Uint8Array constructor

new Uint8Array(); // new in ES2017
new Uint8Array(length);
new Uint8Array(typedArray);
new Uint8Array(object);

new Uint8Array(buffer);
new Uint8Array(buffer, byteOffset);
new Uint8Array(buffer, byteOffset, length);

Contributor guide