Closed
Description
Search Terms: Intl.DisplayNames, "Property 'DisplayNames' does not exist on type 'typeof Intl'."
Code
let languageNames = new Intl.DisplayNames(['en'], { type: 'language' });
Expected behavior: TS knows DisplayNames
and does appropriate type checking.
Actual behavior: TS displays error: Property 'DisplayNames' does not exist on type 'typeof Intl'.
Playground Link: https://www.typescriptlang.org/play?ts=4.1.0-dev.20201030#code/DYUwLgBMCGB2DmBXa8QDloFsQGcIF4JYQB3CASVjGADoARASxwAcYBPDbHACgG0ByELH4BdADQQA3hDBtmIAFwR+MBMlT8IAXwCUAbgBQECEA
Related Issues: N/A
Respective MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames
Respective TC39: https://tc39.es/proposal-intl-displaynames/
Activity
MartinJohns commentedon Oct 30, 2020
Type definitions for drafts are usually not added to the type definitions provided by TypeScript.
In the TypeScript-DOM-lib-generator project they list as a requirement for additions:
Neither Firefox nor Safari support this feature. There's no mention of TC39, but it's likely that the same principle applies.
You can use declaration merging to make the types available in your code base.
typescript-bot commentedon Nov 12, 2020
This issue has been marked 'Working as Intended' and has seen no recent activity. It has been automatically closed for house-keeping purposes.
Add Intl.DisplayNames types
Add Intl.DisplayNames types
TimvdLippe commentedon May 29, 2021
Can we reopen this issue for #44022 ?
sroucheray commentedon Jul 18, 2022
It is now supported in all major browser versions https://caniuse.com/?search=Intl.DisplayNames and is referenced in ECMA402 https://tc39.es/ecma402/#intl-displaynames-objects. I think this might be time to reopen this issue.
SchmidtDawid commentedon Sep 26, 2022
Why this is still causing problems? How to fix it?
j-ulrich commentedon Apr 12, 2023
Should be fixed with TypeScript 4.5 according to PR #45647
MichalBryxi commentedon May 31, 2023
TS playground v5.0.4 still says:
MartinJohns commentedon Jun 1, 2023
@MichalBryxi It works just fine in the Playground when you target an ES version that supports it.
MichalBryxi commentedon Jun 1, 2023
Ah! So for future travelers: Minimum requirements that seem to work:
v4.5
should be enough, but can't verify in the live playground)Switch to ESNext for Intl.DisplayNames types