@@ -6,19 +6,16 @@ type GetParamKeys<TTranslation extends string> = TTranslation extends ""
66 ? [ Param , ...GetParamKeys < Tail > ]
77 : [ ] ;
88
9- type GetParamKeysAsUnion < TTranslation extends string > =
10- GetParamKeys < TTranslation > [ number ] ;
11-
129const translate = <
1310 TTranslations extends Record < string , string > ,
1411 TKey extends keyof TTranslations ,
15- TDynamicKeys = GetParamKeysAsUnion < TTranslations [ TKey ] > ,
12+ TComputedArgs extends string [ ] = GetParamKeys < TTranslations [ TKey ] > ,
1613> (
1714 translations : TTranslations ,
1815 key : TKey ,
19- ...args : [ TDynamicKeys ] extends [ never ]
16+ ...args : TComputedArgs extends [ ]
2017 ? [ ]
21- : [ dynamicArgs : Record < TDynamicKeys & string , string > ]
18+ : [ params : Record < TComputedArgs [ number ] , string > ]
2219) => {
2320 const translation = translations [ key ] ;
2421 const params : any = args [ 0 ] || { } ;
@@ -29,7 +26,7 @@ const translate = <
2926// TESTS
3027
3128const translations = {
32- title : "Hello, {name }!" ,
29+ title : "Hello, {firstName} {surname }!" ,
3330 subtitle : "You have {count} unread messages." ,
3431 button : "Click me!" ,
3532} as const ;
0 commit comments