Skip to content

Commit 2e46476

Browse files
authored
fix(types): $t types (#1883)
1 parent dc83650 commit 2e46476

File tree

3 files changed

+60
-50
lines changed

3 files changed

+60
-50
lines changed

packages/core-base/src/types/utils.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,14 @@ export type LocaleRecord<T extends any[], R> = {
3030

3131
export type First<T extends readonly any[]> = T[0]
3232

33+
export declare type JsonPaths<T, Key extends keyof T = keyof T> = Key extends string ?
34+
T[Key] extends Record<string, any> ?
35+
`${Key}.${JsonPaths<T[Key]>}`
36+
: `${Key}`
37+
: never;
38+
export declare type TranslationsPaths<T extends object, K extends keyof T = keyof T> = K extends string
39+
? JsonPaths<T[K]> : never;
40+
3341
export type __ResourcePath<T, Key extends keyof T> = Key extends string
3442
? T[Key] extends Record<string, any>
3543
?

packages/vue-i18n-core/src/composer.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,14 @@ import type {
102102
ResourceValue,
103103
ResourcePath,
104104
ResourceNode,
105-
PickupPaths,
106105
PickupFormatPathKeys,
107106
RemoveIndexSignature,
108107
RemovedIndexResources,
109108
IsNever,
110109
IsEmptyObject,
111-
CoreMissingType
110+
CoreMissingType,
111+
JsonPaths,
112+
TranslationsPaths
112113
} from '@intlify/core-base'
113114
import type { VueDevToolsEmitter } from '@intlify/devtools-types'
114115

@@ -640,11 +641,13 @@ export interface ComposerTranslation<
640641
DefinedLocaleMessage extends
641642
RemovedIndexResources<DefineLocaleMessage> = RemovedIndexResources<DefineLocaleMessage>,
642643
C = IsEmptyObject<DefinedLocaleMessage> extends false
643-
? PickupPaths<{
644+
? JsonPaths<{
644645
[K in keyof DefinedLocaleMessage]: DefinedLocaleMessage[K]
645646
}>
646647
: never,
647-
M = IsEmptyObject<Messages> extends false ? PickupKeys<Messages> : never,
648+
M = IsEmptyObject<Messages> extends false
649+
? TranslationsPaths<Messages>
650+
: never,
648651
ResourceKeys extends C | M = IsNever<C> extends false
649652
? IsNever<M> extends false
650653
? C | M

0 commit comments

Comments
 (0)