Skip to content

Commit 3b996de

Browse files
authored
fix: Intl.PluralRulesOptions to behave according to spec (#33414)
TL;DR: MDN doc is not accurate: tc39/ecma402#365 (comment) According to spec, `PluralRulesOptions` do take in these extra params (point 2 in https://tc39.es/ecma402/#sec-intl-pluralrules-constructor) Add LDMLPluralRule according to http://cldr.unicode.org/index/cldr-spec/plural-rules#TOC-Determining-Plural-Categories ResolvedPluralRulesOptions also have these params as optional because according to spec https://tc39.es/ecma402/#sec-initializepluralrules https://tc39.es/ecma402/#sec-setnfdigitoptions
1 parent ff04220 commit 3b996de

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

src/lib/es2018.intl.d.ts

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,33 @@
11
declare namespace Intl {
2+
3+
// http://cldr.unicode.org/index/cldr-spec/plural-rules#TOC-Determining-Plural-Categories
4+
type LDMLPluralRule = "zero" | "one" | "two" | "few" | "many" | "other";
5+
type PluralRuleType = "cardinal" | "ordinal";
6+
27
interface PluralRulesOptions {
38
localeMatcher?: "lookup" | "best fit";
4-
type?: "cardinal" | "ordinal";
9+
type?: PluralRuleType;
10+
minimumIntegerDigits?: number;
11+
minimumFractionDigits?: number;
12+
maximumFractionDigits?: number;
13+
minimumSignificantDigits?: number;
14+
maximumSignificantDigits?: number;
515
}
616

717
interface ResolvedPluralRulesOptions {
818
locale: string;
9-
pluralCategories: string[];
10-
type: "cardinal" | "ordinal";
19+
pluralCategories: LDMLPluralRule[];
20+
type: PluralRuleType;
1121
minimumIntegerDigits: number;
1222
minimumFractionDigits: number;
1323
maximumFractionDigits: number;
14-
minimumSignificantDigits: number;
15-
maximumSignificantDigits: number;
24+
minimumSignificantDigits?: number;
25+
maximumSignificantDigits?: number;
1626
}
1727

1828
interface PluralRules {
1929
resolvedOptions(): ResolvedPluralRulesOptions;
20-
select(n: number): string;
30+
select(n: number): LDMLPluralRule;
2131
}
2232

2333
const PluralRules: {

0 commit comments

Comments
 (0)