Microsoft/TypeScript
Auf GitHub ansehenThe second parameter type of `apply` should be `ArrayLike<T>` instead of `T[]`
Open
#61.835 geöffnet am 9. Juni 2025
Domain: lib.d.tsHelp WantedPossible Improvement
Repository-Metriken
- Stars
- (48.455 Stars)
- PR-Merge-Metriken
- (Durchschn. Merge 6T 17h) (9 gemergte PRs in 30 T)
Beschreibung
🔎 Search Terms
String.prototype.apply
I found #33173, but the issue was closed without a reason. The problem still persists.
🕗 Version & Regression Information
At least since v3.3.3 according to the Playground.
⏯ Playground Link
💻 Code
const u8 = new Uint8Array([0x41,0x42,0x43]);
String.fromCharCode.apply(null, u8);
🙁 Actual behavior
Argument of type 'Uint8Array<ArrayBuffer>' is not assignable to parameter of type 'number[]'.
Type 'Uint8Array<ArrayBuffer>' is missing the following properties from type 'number[]': pop, push, concat, shift, and 3 more.(2345)
🙂 Expected behavior
no error
Additional information about the issue
This code works fine at runtime. ECMAScript spec does not require a genuine array at all. ArrayLike is sufficient.
Workarounds such as
String.fromCharCode.apply(null, Array.from(u8));
will impose runtime overheads.