lib.es2020.intl.d.ts (22438B)
1 /*! ***************************************************************************** 2 Copyright (c) Microsoft Corporation. All rights reserved. 3 Licensed under the Apache License, Version 2.0 (the "License"); you may not use 4 this file except in compliance with the License. You may obtain a copy of the 5 License at http://www.apache.org/licenses/LICENSE-2.0 6 7 THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 8 KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED 9 WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, 10 MERCHANTABLITY OR NON-INFRINGEMENT. 11 12 See the Apache Version 2.0 License for specific language governing permissions 13 and limitations under the License. 14 ***************************************************************************** */ 15 16 17 /// <reference no-default-lib="true"/> 18 19 /// <reference lib="es2018.intl" /> 20 declare namespace Intl { 21 /** 22 * A string that is a valid [Unicode BCP 47 Locale Identifier](https://unicode.org/reports/tr35/#Unicode_locale_identifier). 23 * 24 * For example: "fa", "es-MX", "zh-Hant-TW". 25 * 26 * See [MDN - Intl - locales argument](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument). 27 */ 28 type UnicodeBCP47LocaleIdentifier = string; 29 30 /** 31 * Unit to use in the relative time internationalized message. 32 * 33 * [MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/format#Parameters). 34 */ 35 type RelativeTimeFormatUnit = 36 | "year" 37 | "years" 38 | "quarter" 39 | "quarters" 40 | "month" 41 | "months" 42 | "week" 43 | "weeks" 44 | "day" 45 | "days" 46 | "hour" 47 | "hours" 48 | "minute" 49 | "minutes" 50 | "second" 51 | "seconds"; 52 53 /** 54 * Value of the `unit` property in objects returned by 55 * `Intl.RelativeTimeFormat.prototype.formatToParts()`. `formatToParts` and 56 * `format` methods accept either singular or plural unit names as input, 57 * but `formatToParts` only outputs singular (e.g. "day") not plural (e.g. 58 * "days"). 59 * 60 * [MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/formatToParts#Using_formatToParts). 61 */ 62 type RelativeTimeFormatUnitSingular = 63 | "year" 64 | "quarter" 65 | "month" 66 | "week" 67 | "day" 68 | "hour" 69 | "minute" 70 | "second"; 71 72 /** 73 * The locale matching algorithm to use. 74 * 75 * [MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_negotiation). 76 */ 77 type RelativeTimeFormatLocaleMatcher = "lookup" | "best fit"; 78 79 /** 80 * The format of output message. 81 * 82 * [MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat#Parameters). 83 */ 84 type RelativeTimeFormatNumeric = "always" | "auto"; 85 86 /** 87 * The length of the internationalized message. 88 * 89 * [MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat#Parameters). 90 */ 91 type RelativeTimeFormatStyle = "long" | "short" | "narrow"; 92 93 /** 94 * The locale or locales to use 95 * 96 * See [MDN - Intl - locales argument](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument). 97 */ 98 type LocalesArgument = UnicodeBCP47LocaleIdentifier | Locale | readonly (UnicodeBCP47LocaleIdentifier | Locale)[] | undefined; 99 100 /** 101 * An object with some or all of properties of `options` parameter 102 * of `Intl.RelativeTimeFormat` constructor. 103 * 104 * [MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat#Parameters). 105 */ 106 interface RelativeTimeFormatOptions { 107 /** The locale matching algorithm to use. For information about this option, see [Intl page](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_negotiation). */ 108 localeMatcher?: RelativeTimeFormatLocaleMatcher; 109 /** The format of output message. */ 110 numeric?: RelativeTimeFormatNumeric; 111 /** The length of the internationalized message. */ 112 style?: RelativeTimeFormatStyle; 113 } 114 115 /** 116 * An object with properties reflecting the locale 117 * and formatting options computed during initialization 118 * of the `Intl.RelativeTimeFormat` object 119 * 120 * [MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/resolvedOptions#Description). 121 */ 122 interface ResolvedRelativeTimeFormatOptions { 123 locale: UnicodeBCP47LocaleIdentifier; 124 style: RelativeTimeFormatStyle; 125 numeric: RelativeTimeFormatNumeric; 126 numberingSystem: string; 127 } 128 129 /** 130 * An object representing the relative time format in parts 131 * that can be used for custom locale-aware formatting. 132 * 133 * [MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/formatToParts#Using_formatToParts). 134 */ 135 type RelativeTimeFormatPart = 136 | { 137 type: "literal"; 138 value: string; 139 } 140 | { 141 type: Exclude<NumberFormatPartTypes, "literal">; 142 value: string; 143 unit: RelativeTimeFormatUnitSingular; 144 }; 145 146 interface RelativeTimeFormat { 147 /** 148 * Formats a value and a unit according to the locale 149 * and formatting options of the given 150 * [`Intl.RelativeTimeFormat`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/RelativeTimeFormat) 151 * object. 152 * 153 * While this method automatically provides the correct plural forms, 154 * the grammatical form is otherwise as neutral as possible. 155 * 156 * It is the caller's responsibility to handle cut-off logic 157 * such as deciding between displaying "in 7 days" or "in 1 week". 158 * This API does not support relative dates involving compound units. 159 * e.g "in 5 days and 4 hours". 160 * 161 * @param value - Numeric value to use in the internationalized relative time message 162 * 163 * @param unit - [Unit](https://tc39.es/ecma402/#sec-singularrelativetimeunit) to use in the relative time internationalized message. 164 * 165 * @throws `RangeError` if `unit` was given something other than `unit` possible values 166 * 167 * @returns {string} Internationalized relative time message as string 168 * 169 * [MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/format). 170 */ 171 format(value: number, unit: RelativeTimeFormatUnit): string; 172 173 /** 174 * Returns an array of objects representing the relative time format in parts that can be used for custom locale-aware formatting. 175 * 176 * @param value - Numeric value to use in the internationalized relative time message 177 * 178 * @param unit - [Unit](https://tc39.es/ecma402/#sec-singularrelativetimeunit) to use in the relative time internationalized message. 179 * 180 * @throws `RangeError` if `unit` was given something other than `unit` possible values 181 * 182 * [MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/formatToParts). 183 */ 184 formatToParts(value: number, unit: RelativeTimeFormatUnit): RelativeTimeFormatPart[]; 185 186 /** 187 * Provides access to the locale and options computed during initialization of this `Intl.RelativeTimeFormat` object. 188 * 189 * [MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/resolvedOptions). 190 */ 191 resolvedOptions(): ResolvedRelativeTimeFormatOptions; 192 } 193 194 /** 195 * The [`Intl.RelativeTimeFormat`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/RelativeTimeFormat) 196 * object is a constructor for objects that enable language-sensitive relative time formatting. 197 * 198 * [Compatibility](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat#Browser_compatibility). 199 */ 200 const RelativeTimeFormat: { 201 /** 202 * Creates [Intl.RelativeTimeFormat](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/RelativeTimeFormat) objects 203 * 204 * @param locales - A string with a [BCP 47 language tag](http://tools.ietf.org/html/rfc5646), or an array of such strings. 205 * For the general form and interpretation of the locales argument, 206 * see the [`Intl` page](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation). 207 * 208 * @param options - An [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat#Parameters) 209 * with some or all of options of `RelativeTimeFormatOptions`. 210 * 211 * @returns [Intl.RelativeTimeFormat](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/RelativeTimeFormat) object. 212 * 213 * [MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat). 214 */ 215 new ( 216 locales?: LocalesArgument, 217 options?: RelativeTimeFormatOptions, 218 ): RelativeTimeFormat; 219 220 /** 221 * Returns an array containing those of the provided locales 222 * that are supported in date and time formatting 223 * without having to fall back to the runtime's default locale. 224 * 225 * @param locales - A string with a [BCP 47 language tag](http://tools.ietf.org/html/rfc5646), or an array of such strings. 226 * For the general form and interpretation of the locales argument, 227 * see the [`Intl` page](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation). 228 * 229 * @param options - An [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat#Parameters) 230 * with some or all of options of the formatting. 231 * 232 * @returns An array containing those of the provided locales 233 * that are supported in date and time formatting 234 * without having to fall back to the runtime's default locale. 235 * 236 * [MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/supportedLocalesOf). 237 */ 238 supportedLocalesOf( 239 locales?: LocalesArgument, 240 options?: RelativeTimeFormatOptions, 241 ): UnicodeBCP47LocaleIdentifier[]; 242 }; 243 244 interface NumberFormatOptionsStyleRegistry { 245 unit: never; 246 } 247 248 interface NumberFormatOptionsCurrencyDisplayRegistry { 249 narrowSymbol: never; 250 } 251 252 interface NumberFormatOptionsSignDisplayRegistry { 253 auto: never; 254 never: never; 255 always: never; 256 exceptZero: never; 257 } 258 259 type NumberFormatOptionsSignDisplay = keyof NumberFormatOptionsSignDisplayRegistry; 260 261 interface NumberFormatOptions { 262 numberingSystem?: string | undefined; 263 compactDisplay?: "short" | "long" | undefined; 264 notation?: "standard" | "scientific" | "engineering" | "compact" | undefined; 265 signDisplay?: NumberFormatOptionsSignDisplay | undefined; 266 unit?: string | undefined; 267 unitDisplay?: "short" | "long" | "narrow" | undefined; 268 currencySign?: "standard" | "accounting" | undefined; 269 } 270 271 interface ResolvedNumberFormatOptions { 272 compactDisplay?: "short" | "long"; 273 notation: "standard" | "scientific" | "engineering" | "compact"; 274 signDisplay: NumberFormatOptionsSignDisplay; 275 unit?: string; 276 unitDisplay?: "short" | "long" | "narrow"; 277 currencySign?: "standard" | "accounting"; 278 } 279 280 interface NumberFormatPartTypeRegistry { 281 compact: never; 282 exponentInteger: never; 283 exponentMinusSign: never; 284 exponentSeparator: never; 285 unit: never; 286 unknown: never; 287 } 288 289 interface DateTimeFormatOptions { 290 calendar?: string | undefined; 291 dayPeriod?: "narrow" | "short" | "long" | undefined; 292 numberingSystem?: string | undefined; 293 294 dateStyle?: "full" | "long" | "medium" | "short" | undefined; 295 timeStyle?: "full" | "long" | "medium" | "short" | undefined; 296 hourCycle?: "h11" | "h12" | "h23" | "h24" | undefined; 297 } 298 299 type LocaleHourCycleKey = "h12" | "h23" | "h11" | "h24"; 300 type LocaleCollationCaseFirst = "upper" | "lower" | "false"; 301 302 interface LocaleOptions { 303 /** A string containing the language, and the script and region if available. */ 304 baseName?: string; 305 /** The part of the Locale that indicates the locale's calendar era. */ 306 calendar?: string; 307 /** Flag that defines whether case is taken into account for the locale's collation rules. */ 308 caseFirst?: LocaleCollationCaseFirst; 309 /** The collation type used for sorting */ 310 collation?: string; 311 /** The time keeping format convention used by the locale. */ 312 hourCycle?: LocaleHourCycleKey; 313 /** The primary language subtag associated with the locale. */ 314 language?: string; 315 /** The numeral system used by the locale. */ 316 numberingSystem?: string; 317 /** Flag that defines whether the locale has special collation handling for numeric characters. */ 318 numeric?: boolean; 319 /** The region of the world (usually a country) associated with the locale. Possible values are region codes as defined by ISO 3166-1. */ 320 region?: string; 321 /** The script used for writing the particular language used in the locale. Possible values are script codes as defined by ISO 15924. */ 322 script?: string; 323 } 324 325 interface Locale extends LocaleOptions { 326 /** A string containing the language, and the script and region if available. */ 327 baseName: string; 328 /** The primary language subtag associated with the locale. */ 329 language: string; 330 /** Gets the most likely values for the language, script, and region of the locale based on existing values. */ 331 maximize(): Locale; 332 /** Attempts to remove information about the locale that would be added by calling `Locale.maximize()`. */ 333 minimize(): Locale; 334 /** Returns the locale's full locale identifier string. */ 335 toString(): UnicodeBCP47LocaleIdentifier; 336 } 337 338 /** 339 * Constructor creates [Intl.Locale](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) 340 * objects 341 * 342 * @param tag - A string with a [BCP 47 language tag](http://tools.ietf.org/html/rfc5646). 343 * For the general form and interpretation of the locales argument, 344 * see the [`Intl` page](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation). 345 * 346 * @param options - An [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/Locale#Parameters) with some or all of options of the locale. 347 * 348 * @returns [Intl.Locale](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) object. 349 * 350 * [MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale). 351 */ 352 const Locale: { 353 new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions): Locale; 354 }; 355 356 type DisplayNamesFallback = 357 | "code" 358 | "none"; 359 360 type DisplayNamesType = 361 | "language" 362 | "region" 363 | "script" 364 | "calendar" 365 | "dateTimeField" 366 | "currency"; 367 368 type DisplayNamesLanguageDisplay = 369 | "dialect" 370 | "standard"; 371 372 interface DisplayNamesOptions { 373 localeMatcher?: RelativeTimeFormatLocaleMatcher; 374 style?: RelativeTimeFormatStyle; 375 type: DisplayNamesType; 376 languageDisplay?: DisplayNamesLanguageDisplay; 377 fallback?: DisplayNamesFallback; 378 } 379 380 interface ResolvedDisplayNamesOptions { 381 locale: UnicodeBCP47LocaleIdentifier; 382 style: RelativeTimeFormatStyle; 383 type: DisplayNamesType; 384 fallback: DisplayNamesFallback; 385 languageDisplay?: DisplayNamesLanguageDisplay; 386 } 387 388 interface DisplayNames { 389 /** 390 * Receives a code and returns a string based on the locale and options provided when instantiating 391 * [`Intl.DisplayNames()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames) 392 * 393 * @param code The `code` to provide depends on the `type` passed to display name during creation: 394 * - If the type is `"region"`, code should be either an [ISO-3166 two letters region code](https://www.iso.org/iso-3166-country-codes.html), 395 * or a [three digits UN M49 Geographic Regions](https://unstats.un.org/unsd/methodology/m49/). 396 * - If the type is `"script"`, code should be an [ISO-15924 four letters script code](https://unicode.org/iso15924/iso15924-codes.html). 397 * - If the type is `"language"`, code should be a `languageCode` ["-" `scriptCode`] ["-" `regionCode` ] *("-" `variant` ) 398 * subsequence of the unicode_language_id grammar in [UTS 35's Unicode Language and Locale Identifiers grammar](https://unicode.org/reports/tr35/#Unicode_language_identifier). 399 * `languageCode` is either a two letters ISO 639-1 language code or a three letters ISO 639-2 language code. 400 * - If the type is `"currency"`, code should be a [3-letter ISO 4217 currency code](https://www.iso.org/iso-4217-currency-codes.html). 401 * 402 * [MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/of). 403 */ 404 of(code: string): string | undefined; 405 /** 406 * Returns a new object with properties reflecting the locale and style formatting options computed during the construction of the current 407 * [`Intl/DisplayNames`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames) object. 408 * 409 * [MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/resolvedOptions). 410 */ 411 resolvedOptions(): ResolvedDisplayNamesOptions; 412 } 413 414 /** 415 * The [`Intl.DisplayNames()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames) 416 * object enables the consistent translation of language, region and script display names. 417 * 418 * [Compatibility](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames#browser_compatibility). 419 */ 420 const DisplayNames: { 421 prototype: DisplayNames; 422 423 /** 424 * @param locales A string with a BCP 47 language tag, or an array of such strings. 425 * For the general form and interpretation of the `locales` argument, see the [Intl](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl#locale_identification_and_negotiation) 426 * page. 427 * 428 * @param options An object for setting up a display name. 429 * 430 * [MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/DisplayNames). 431 */ 432 new (locales: LocalesArgument, options: DisplayNamesOptions): DisplayNames; 433 434 /** 435 * Returns an array containing those of the provided locales that are supported in display names without having to fall back to the runtime's default locale. 436 * 437 * @param locales A string with a BCP 47 language tag, or an array of such strings. 438 * For the general form and interpretation of the `locales` argument, see the [Intl](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl#locale_identification_and_negotiation) 439 * page. 440 * 441 * @param options An object with a locale matcher. 442 * 443 * @returns An array of strings representing a subset of the given locale tags that are supported in display names without having to fall back to the runtime's default locale. 444 * 445 * [MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/supportedLocalesOf). 446 */ 447 supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): UnicodeBCP47LocaleIdentifier[]; 448 }; 449 450 interface CollatorConstructor { 451 new (locales?: LocalesArgument, options?: CollatorOptions): Collator; 452 (locales?: LocalesArgument, options?: CollatorOptions): Collator; 453 supportedLocalesOf(locales: LocalesArgument, options?: CollatorOptions): string[]; 454 } 455 456 interface DateTimeFormatConstructor { 457 new (locales?: LocalesArgument, options?: DateTimeFormatOptions): DateTimeFormat; 458 (locales?: LocalesArgument, options?: DateTimeFormatOptions): DateTimeFormat; 459 supportedLocalesOf(locales: LocalesArgument, options?: DateTimeFormatOptions): string[]; 460 } 461 462 interface NumberFormatConstructor { 463 new (locales?: LocalesArgument, options?: NumberFormatOptions): NumberFormat; 464 (locales?: LocalesArgument, options?: NumberFormatOptions): NumberFormat; 465 supportedLocalesOf(locales: LocalesArgument, options?: NumberFormatOptions): string[]; 466 } 467 468 interface PluralRulesConstructor { 469 new (locales?: LocalesArgument, options?: PluralRulesOptions): PluralRules; 470 (locales?: LocalesArgument, options?: PluralRulesOptions): PluralRules; 471 472 supportedLocalesOf(locales: LocalesArgument, options?: { localeMatcher?: "lookup" | "best fit"; }): string[]; 473 } 474 }