Microsoft/TypeScript

Incorrect type returned by TextEncoder.encode

Open

#60.846 aperta il 23 dic 2024

Vedi su GitHub
 (3 commenti) (3 reazioni) (0 assegnatari)TypeScript (6726 fork)batch import
BugDomain: lib.d.tsHelp Wanted

Metriche repository

Star
 (48.455 star)
Metriche merge PR
 (Merge medio 6g 17h) (9 PR mergiate in 30 g)

Descrizione

🔎 Search Terms

TypedArray, Uint8Array, ArrayBufferLike, TextEncoder

🕗 Version & Regression Information

  • This is the behavior in every version I tried, and I reviewed the FAQ for entries about TextEncoder

⏯ Playground Link

Playground link

💻 Code

const data = new TextEncoder().encode("hello")
//    ^? Uint8Array<ArrayBufferLike>
// The `ArrayBufferLike` may include `SharedArrayBuffer`, but `encode()` 
// only supports `ArrayBuffer`, so this breaks code expecting an `ArrayBuffer`.

function processData(d: ArrayBuffer) {
  // do stuff
}

processData(data.buffer) // This should work, but reported as type error

🙁 Actual behavior

Values returned by TextEncoder.encode are not assignable to ArrayBuffer.

🙂 Expected behavior

Values returned by TextEncoder.encode should be assignable to ArrayBuffer.

Additional information about the issue

https://stackoverflow.com/a/79300250/1494725

Guida contributor