microsoft / TypeScript

TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
https://www.typescriptlang.org
Apache License 2.0
100.72k stars 12.45k forks source link

URLSearchParams needs size #54466

Open AndyOGo opened 1 year ago

AndyOGo commented 1 year ago

Bug Report

🔎 Search Terms

URLSearchParams

🕗 Version & Regression Information

TypeScript Version: typescript@4.9.5

⏯ Playground Link

Playground link with relevant code

💻 Code

console.log(new URLSearchParams().size)

🙁 Actual behavior

Property 'size' does not exist on type 'URLSearchParams'.ts(2339)

🙂 Expected behavior

No error

Related bug:

https://github.com/microsoft/TypeScript/issues/38139

Note: Adding { "lib": ["dom.iterable"] } to my compilerOptions does not help.

AndyOGo commented 1 year ago

Quick workaround is to extend "dom.iterable" locally, e.g.:

URLSearchParams.d.ts:

interface URLSearchParams {
  size: number;
}
fatcerberus commented 1 year ago

Makes sense, according to MDN it seems like this only landed in Chrome this month. TS tends to wait until at least 2 browser engines support an API before adding it to dom.

bencmbrook commented 1 year ago

This has rolled out to Chrome and Firefox since (Safari is in experimental) https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/size#browser_compatibility

Interestingly it looks like it's showing up in src/lib/dom.generated.d.ts now

https://github.com/microsoft/TypeScript/blob/2170e6c6cc12f08bfa2975955da2f145e4be6101/src/lib/dom.generated.d.ts#L22555-L22557