Skip to content

Commit 417f69a

Browse files
committed
Improved problem/solution for 34
1 parent 7ac23db commit 417f69a

File tree

2 files changed

+4
-10
lines changed

2 files changed

+4
-10
lines changed

src/06-challenges/34-internationalization.problem.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@ type GetParamKeys<TTranslation extends string> = TTranslation extends ""
66
? [Param, ...GetParamKeys<Tail>]
77
: [];
88

9-
type GetParamKeysAsUnion<TTranslation extends string> =
10-
GetParamKeys<TTranslation>[number];
11-
129
const translate = (translations: unknown, key: unknown, ...args: unknown[]) => {
1310
const translation = translations[key];
1411
const params: any = args[0] || {};

src/06-challenges/34-internationalization.solution.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
129
const 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

3128
const 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

Comments
 (0)