Skip to content

Commit 8fa62ef

Browse files
authored
Fix performance issues that affects flat object with multiple keys (#2004)
1 parent 815cd83 commit 8fa62ef

File tree

1 file changed

+3
-9
lines changed

1 file changed

+3
-9
lines changed

index.d.ts

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// Internal Helpers
22
type $MergeBy<T, K> = Omit<T, keyof K> & K;
33
type $Dictionary<T = any> = { [key: string]: T };
4-
type $Value<Obj, Key> = Key extends keyof Obj ? Obj[Key] : never;
54
type $OmitArrayKeys<Arr> = Arr extends readonly any[] ? Omit<Arr, keyof any[]> : Arr;
65
type $PreservedValue<Value, Fallback> = [Value] extends [never] ? Fallback : Value;
76
type $FirstNamespace<Ns extends Namespace> = Ns extends readonly any[] ? Ns[0] : Ns;
@@ -866,14 +865,10 @@ type ParseTReturnPlural<
866865
KeyWithPlural = `${Key & string}${_PluralSeparator}${PluralSuffix}`,
867866
KeyWithOrdinalPlural = `${Key &
868867
string}${_PluralSeparator}ordinal${_PluralSeparator}${PluralSuffix}`,
869-
> = KeyWithOrdinalPlural extends keyof Res
870-
? Res[KeyWithOrdinalPlural]
871-
: KeyWithPlural extends keyof Res
872-
? Res[KeyWithPlural]
873-
: $Value<Res, Key>;
868+
> = Res[(KeyWithOrdinalPlural | KeyWithPlural | Key) & keyof Res];
874869

875870
type ParseTReturn<Key, Res> = Key extends `${infer K1}${_KeySeparator}${infer RestKey}`
876-
? ParseTReturn<RestKey, $Value<Res, K1>>
871+
? ParseTReturn<RestKey, Res[K1 & keyof Res]>
877872
: ParseTReturnPlural<Res, Key>;
878873

879874
type TReturnOptionalNull = _ReturnNull extends true ? null : never;
@@ -891,7 +886,7 @@ export type TFunctionReturn<
891886
ActualNS extends Namespace = NsByTOptions<Ns, TOpt>,
892887
> = $IsResourcesDefined extends true
893888
? Key extends `${infer Nsp}${_NsSeparator}${infer RestKey}`
894-
? ParseTReturn<RestKey, $Value<Resources, Nsp>>
889+
? ParseTReturn<RestKey, Resources[Nsp & keyof Resources]>
895890
: ParseTReturn<Key, Resources[$FirstNamespace<ActualNS>]>
896891
: DefaultTReturn<TOpt>;
897892

@@ -915,7 +910,6 @@ export interface TFunction<Ns extends Namespace = _DefaultNamespace, KPrefix = u
915910
>(
916911
...args:
917912
| [key: Key | Key[], options?: TOpt & InterpolationMap<Ret>]
918-
| [key: Key | Key[], defaultValue: string, options?: TOpt & InterpolationMap<Ret>]
919913
| [key: string | string[], options: TOpt & InterpolationMap<Ret> & { defaultValue: string }]
920914
| [key: string | string[], defaultValue: string, options?: TOpt & InterpolationMap<Ret>]
921915
): TFunctionReturnOptionalDetails<Ret, TOpt>;

0 commit comments

Comments
 (0)