Microsoft/TypeScript
GitHub ã§èŠãThe second parameter type of `apply` should be `ArrayLike<T>` instead of `T[]`
Open
#61,835 opened on 2025幎6æ9æ¥
Domain: lib.d.tsHelp WantedPossible Improvement
Repository metrics
- Stars
- Â (48,455 stars)
- PR merge metrics
-  (å¹³åããŒãž 6d 17h) (30d ã§ 9 merged PRs)
説æ
ð 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.