fix(common): mark locale data arrays as readonly (#30397)

To discourage developers from mutating the arrays returned
from the following methods, their return types have been marked
as readonly.

* `getLocaleDayPeriods()`
* `getLocaleDayNames()`
* `getLocaleMonthNames()`
* `getLocaleEraNames()`

Fixes #27003

BREAKING CHANGE:
The locale data API has been marked as returning readonly arrays, rather
than mutable arrays, since these arrays are shared across calls to the
API. If you were mutating them (e.g. calling `sort()`, `push()`, `splice()`, etc)
then your code will not longer compile. If you need to mutate the array, you
should now take a copy (e.g. by calling `slice()`) and mutate the copy.

PR Close #30397
This commit is contained in:
Artem Halas
2020-07-12 20:37:19 +03:00
committed by Andrew Kushnir
parent 2d52c80332
commit 6acea54f62
3 changed files with 101 additions and 10 deletions

View File

@ -61,13 +61,13 @@ export declare function getLocaleDateFormat(locale: string, width: FormatWidth):
export declare function getLocaleDateTimeFormat(locale: string, width: FormatWidth): string;
export declare function getLocaleDayNames(locale: string, formStyle: FormStyle, width: TranslationWidth): string[];
export declare function getLocaleDayNames(locale: string, formStyle: FormStyle, width: TranslationWidth): ReadonlyArray<string>;
export declare function getLocaleDayPeriods(locale: string, formStyle: FormStyle, width: TranslationWidth): [string, string];
export declare function getLocaleDayPeriods(locale: string, formStyle: FormStyle, width: TranslationWidth): Readonly<[string, string]>;
export declare function getLocaleDirection(locale: string): 'ltr' | 'rtl';
export declare function getLocaleEraNames(locale: string, width: TranslationWidth): [string, string];
export declare function getLocaleEraNames(locale: string, width: TranslationWidth): Readonly<[string, string]>;
export declare function getLocaleExtraDayPeriodRules(locale: string): (Time | [Time, Time])[];
@ -77,7 +77,7 @@ export declare function getLocaleFirstDayOfWeek(locale: string): WeekDay;
export declare function getLocaleId(locale: string): string;
export declare function getLocaleMonthNames(locale: string, formStyle: FormStyle, width: TranslationWidth): string[];
export declare function getLocaleMonthNames(locale: string, formStyle: FormStyle, width: TranslationWidth): ReadonlyArray<string>;
export declare function getLocaleNumberFormat(locale: string, type: NumberFormatStyle): string;