Skip to content

Conversation

@timostamm
Copy link
Member

This PR updates the repository from TypeScript 5.6 to 5.9.

Important

TypeScript 5.9 includes breaking changes to lib.d.ts, forcing us to change return types for some functions from Uint8Array to Uint8Array<ArrayBuffer>, most notably toBinary().

If you are on TypeScript 5.7 or later, you will not see any issues, because it already ships with the new type parameter.

If you are on TypeScript 5.6 and earlier, you will be affected by this change: The return type of toBinary() will become any, because the compiler does not understand the Uint8Array<ArrayBuffer> type.

If you see a compiler error TS2315: Type 'Uint8Array' is not generic originating from @bufbuild/protobuf, make sure to set skipLibCheck": true in your tsconfig.json.

The rationale for this change in TypeScript is explained in microsoft/TypeScript#59417: Some APIs accept typed arrays backed by a SharedArrayBuffer, while others only accept ArrayBuffer, and the new version of TypeScript checks the types. For example:

// Invalid because fetch requires an ArrayBuffer. Compile-time error with TS v5.9
fetch("http://example.com", {
  method: "POST",
  body: new Uint8Array(new SharedArrayBuffer(0)),
});

// Valid
fetch("http://example.com", {
  method: "POST",
  body: new Uint8Array(new ArrayBuffer(0)),
});

Because of this interoperability with other APIs, it's necessary that we change our return types.

This updates the repository from TypeScript 5.6 to 5.9
TS 5.6 and earlier do not understand the return type `Uint8Array<ArrayBuffer>`. tsconfig.json must be configured to `"skipLibCheck": true` to avoid compiler errors. As a consequence, the return type becomes `any`.
@timostamm timostamm changed the title Update to TypeScript 5.9 and change returns types from Uint8Array to Uint8Array<ArrayBuffer> Update to TypeScript 5.9 and change return types from Uint8Array to Uint8Array<ArrayBuffer> Aug 13, 2025
@timostamm timostamm merged commit 318292b into main Aug 14, 2025
21 checks passed
@timostamm timostamm deleted the tstamm/Update-to-TypeScript-5.9 branch August 14, 2025 13:27
@timostamm timostamm mentioned this pull request Aug 19, 2025
trentm added a commit to elastic/elastic-otel-node that referenced this pull request Sep 4, 2025
The Uint8Array -> any change is I think coming from:
bufbuild/protobuf-es#1200
It might be possible that Uint8Array<ArrayBuffer> would work as well.
trentm added a commit to elastic/elastic-otel-node that referenced this pull request Sep 4, 2025
… 3 updates (#977)

Updates `@bufbuild/protobuf` from 2.6.3 to 2.7.0
Updates `@bufbuild/buf` from 1.56.0 to 1.57.0
Updates `@bufbuild/protoc-gen-es` from 2.6.3 to 2.7.0

* re-run gen:protos and gen:types for new bufbuild deps

The Uint8Array -> any change is I think coming from:
bufbuild/protobuf-es#1200
It might be possible that Uint8Array<ArrayBuffer> would work as well.

Co-authored-by: Trent Mick <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants