@@ -12,6 +12,7 @@ import { Hacker } from './hacker';
1212import { Helpers } from './helpers' ;
1313import { Image } from './image' ;
1414import { Internet } from './internet' ;
15+ import type { KnownLocale } from './locales' ;
1516import allLocales from './locales' ;
1617import { Lorem } from './lorem' ;
1718import { Mersenne } from './mersenne' ;
@@ -25,6 +26,9 @@ import { Unique } from './unique';
2526import { Vehicle } from './vehicle' ;
2627import { Word } from './word' ;
2728
29+ // https://github.com/microsoft/TypeScript/issues/29729#issuecomment-471566609
30+ type LiteralUnion < T extends U , U = string > = T | ( U & { zz_IGNORE_ME ?: never } ) ;
31+
2832export interface LocaleDefinition {
2933 title : string ;
3034 separator ?: string ;
@@ -186,12 +190,13 @@ export interface LocaleDefinition {
186190 [ group : string ] : any ;
187191}
188192
193+ export type UsableLocale = LiteralUnion < KnownLocale > ;
194+ export type UsedLocales = Partial < Record < UsableLocale , LocaleDefinition > > ;
195+
189196export interface FakerOptions {
190- locales ?: {
191- [ locale : string ] : LocaleDefinition ;
192- } ;
193- locale ?: string ;
194- localeFallback ?: string ;
197+ locales ?: UsedLocales ;
198+ locale ?: UsableLocale ;
199+ localeFallback ?: UsableLocale ;
195200}
196201
197202export interface DefinitionTypes {
@@ -216,11 +221,9 @@ export interface DefinitionTypes {
216221}
217222
218223export class Faker {
219- locales : {
220- [ locale : string ] : LocaleDefinition ;
221- } ;
222- locale : string ;
223- localeFallback : string ;
224+ locales : UsedLocales ;
225+ locale : UsableLocale ;
226+ localeFallback : UsableLocale ;
224227
225228 // TODO @Shinigami 92 2022-01-11: For now we loose types here
226229 // @ts -expect-error: will be lazy filled by constructor
@@ -432,7 +435,7 @@ export class Faker {
432435 *
433436 * @param locale
434437 */
435- setLocale ( locale : string ) : void {
438+ setLocale ( locale : UsableLocale ) : void {
436439 this . locale = locale ;
437440 }
438441}
0 commit comments