Commit dd8e7d8
fix: add disposable methods for TypeScript 5.2 compatibility (#82)
Hi 👋
First off, thanks for you work on this 🙇 It's making my life a lot
easier 💜
I recently ran into a problem when updating `JSDOM` in my project, where
the return type wasn't compatible any more:
```
error TS2322: Type 'typeof Headers$1' is not assignable to type '{ new
(init?: HeadersInit | undefined): Headers; prototype: Headers; }'.
The types returned by 'prototype.entries()' are incompatible between these types.
Property '[Symbol.dispose]' is missing in type 'IterableIterator<[string, string]>' but
required in type 'HeadersIterator<[string, string]>'.
6 globalThis.Headers = HeadersPolyfill;
~~~~~~~~~~~~~~~~~~
node_modules/typescript/lib/lib.esnext.disposable.d.ts:36:5
36 [Symbol.dispose](): void;
~~~~~~~~~~~~~~~~~~~~~~~~~
'[Symbol.dispose]' is declared here.
```
This PR fixes this and makes makes the polyfill compatible with
TypeScript 5.2+ 🎉
**Background**
TypeScript 5.2 added `[Symbol.dispose]` to iterator types as part of the
[Explicit Resource
Management](https://github.com/tc39/proposal-explicit-resource-management)
proposal.
This property was missing in the polyfills iterators, making them
incompatible with e.g. current JSDOM and TypeScript.
**Change**
This removes the explicit `IterableIterator` return type annotations
from the `entries()`, `keys()` and `values()` generator functions in
favor of the `Generator` type.
---------
Co-authored-by: Artem Zakharchenko <kettanaito@gmail.com>1 parent 9b42765 commit dd8e7d8
5 files changed
Lines changed: 34 additions & 13 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
| 15 | + | |
16 | 16 | | |
17 | 17 | | |
18 | | - | |
| 18 | + | |
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
24 | | - | |
| 24 | + | |
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | | - | |
| 14 | + | |
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
20 | | - | |
| 20 | + | |
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
32 | | - | |
33 | | - | |
34 | | - | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
35 | 35 | | |
36 | | - | |
37 | | - | |
| 36 | + | |
| 37 | + | |
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
131 | 131 | | |
132 | 132 | | |
133 | 133 | | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
134 | 141 | | |
135 | 142 | | |
136 | 143 | | |
| |||
174 | 181 | | |
175 | 182 | | |
176 | 183 | | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
177 | 191 | | |
178 | 192 | | |
179 | 193 | | |
| |||
228 | 242 | | |
229 | 243 | | |
230 | 244 | | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
231 | 252 | | |
232 | 253 | | |
233 | 254 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
61 | | - | |
| 61 | + | |
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
67 | | - | |
| 67 | + | |
68 | 68 | | |
69 | 69 | | |
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
73 | | - | |
| 73 | + | |
74 | 74 | | |
75 | 75 | | |
76 | 76 | | |
| |||
0 commit comments