Skip to content

Commit

Permalink
fix(types): $t types (#1883)
Browse files Browse the repository at this point in the history
  • Loading branch information
mitjans authored Jul 5, 2024
1 parent dc83650 commit 2e46476
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 50 deletions.
8 changes: 8 additions & 0 deletions packages/core-base/src/types/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,14 @@ export type LocaleRecord<T extends any[], R> = {

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

export declare type JsonPaths<T, Key extends keyof T = keyof T> = Key extends string ?
T[Key] extends Record<string, any> ?
`${Key}.${JsonPaths<T[Key]>}`
: `${Key}`
: never;
export declare type TranslationsPaths<T extends object, K extends keyof T = keyof T> = K extends string
? JsonPaths<T[K]> : never;

export type __ResourcePath<T, Key extends keyof T> = Key extends string
? T[Key] extends Record<string, any>
?
Expand Down
11 changes: 7 additions & 4 deletions packages/vue-i18n-core/src/composer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,13 +102,14 @@ import type {
ResourceValue,
ResourcePath,
ResourceNode,
PickupPaths,
PickupFormatPathKeys,
RemoveIndexSignature,
RemovedIndexResources,
IsNever,
IsEmptyObject,
CoreMissingType
CoreMissingType,
JsonPaths,
TranslationsPaths
} from '@intlify/core-base'
import type { VueDevToolsEmitter } from '@intlify/devtools-types'

Expand Down Expand Up @@ -640,11 +641,13 @@ export interface ComposerTranslation<
DefinedLocaleMessage extends
RemovedIndexResources<DefineLocaleMessage> = RemovedIndexResources<DefineLocaleMessage>,
C = IsEmptyObject<DefinedLocaleMessage> extends false
? PickupPaths<{
? JsonPaths<{
[K in keyof DefinedLocaleMessage]: DefinedLocaleMessage[K]
}>
: never,
M = IsEmptyObject<Messages> extends false ? PickupKeys<Messages> : never,
M = IsEmptyObject<Messages> extends false
? TranslationsPaths<Messages>
: never,
ResourceKeys extends C | M = IsNever<C> extends false
? IsNever<M> extends false
? C | M
Expand Down
Loading

0 comments on commit 2e46476

Please sign in to comment.