Add types for plurals-cldr

This commit is contained in:
Joel Spadin 2019-03-02 20:16:38 -06:00
parent a722795328
commit cfb29cc2d2
4 changed files with 92 additions and 0 deletions

53
types/plurals-cldr/index.d.ts vendored Normal file
View File

@ -0,0 +1,53 @@
// Type definitions for plurals-cldr 1.0
// Project: https://github.com/nodeca/plurals-cldr
// Definitions by: Joel Spadin <https://github.com/ChaosinaCan>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
export type Form = 'zero' | 'one' | 'two' | 'few' | 'many' | 'other';
interface Plural {
/**
* Returns the form name for a given number. If the locale is not
* supported, returns `null`.
*
* @param locale The locale code.
* @param number The number to check. May be passed as a string to keep
* trailing zeroes.
*/
(locale: string, number: number | string): Form | null;
/**
* Returns an array of available forms for the given locale. If the
* locale is not supported, returns `null`.
*
* @param locale The locale code.
*/
forms(locale: string): Form[] | null;
/**
* Returns the index of the form for a given number. If the locale is
* not supported, returns `-1`.
*
* This is convenient for implementing a lookup from a compact, ordered
* list. The order of forms for all locales is `zero`, `one`, `two`,
* `few`, `many`, `other`. Remove the forms not used by a locale to get
* the indices of each.
*
* @param locale The locale code.
* @param number The number to check. May be passed as a string to keep
* trailing zeroes.
*/
indexOf(locale: string, number: number | string): number;
}
/**
* Gets the CLDR cardinal plural forms for numbers in different locales.
*/
declare const plural: Plural & {
/**
* Gets the CLDR ordinal plural forms for numbers in different locales.
*/
ordinal: Plural;
};
export default plural;

View File

@ -0,0 +1,15 @@
import plural from 'plurals-cldr';
plural('en', 0); // $ExpectType "zero" | "one" | "two" | "few" | "many" | "other" | null
plural('en', ''); // $ExpectType "zero" | "one" | "two" | "few" | "many" | "other" | null
plural.forms('en'); // $ExpectType Form[] | null
plural.indexOf('en', 0); // $ExpectType number
plural.indexOf('en', ''); // $ExpectType number
plural.ordinal('en', 0); // $ExpectType "zero" | "one" | "two" | "few" | "many" | "other" | null
plural.ordinal('en', ''); // $ExpectType "zero" | "one" | "two" | "few" | "many" | "other" | null
plural.ordinal.forms('en'); // $ExpectType Form[] | null
plural.ordinal.indexOf('en', 0); // $ExpectType number
plural.ordinal.indexOf('en', ''); // $ExpectType number

View File

@ -0,0 +1,23 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"plurals-cldr-tests.ts"
]
}

View File

@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }