Skip to content

Commit 313391c

Browse files
authored
feat: define LocaleMessageDictionary type (#83)
1 parent 9f7be8f commit 313391c

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

src/utils.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ import { VueTemplateCompiler } from '@vue/component-compiler-utils/dist/types'
55
import {
66
SFCFileInfo,
77
Locale,
8-
MetaExternalLocaleMessages,
8+
LocaleMessageDictionary,
9+
LocaleMessage,
910
LocaleMessages,
11+
MetaExternalLocaleMessages,
1012
FormatOptions,
1113
ProviderFactory,
1214
ProviderConfiguration,
@@ -60,6 +62,10 @@ export function resolve (...paths: string[]): string {
6062
return path.resolve(...paths)
6163
}
6264

65+
export function isLocaleMessageDictionary (message: LocaleMessage): message is LocaleMessageDictionary {
66+
return typeof message !== 'string' && !Array.isArray(message)
67+
}
68+
6369
export function reflectSFCDescriptor (basePath: string, components: SFCFileInfo[]): SFCDescriptor[] {
6470
return components.map(target => {
6571
const { template, script, styles, customBlocks } = parse({
@@ -402,13 +408,13 @@ export function splitLocaleMessages (
402408
// eslint-disable-next-line @typescript-eslint/no-explicit-any
403409
const stack = [] as { key: string, ref: any }[]
404410
// eslint-disable-next-line @typescript-eslint/no-explicit-any
405-
let targetLocaleMessage = messages[locale] as any
406-
if (namespace && targetLocaleMessage[namespace]) {
411+
let targetLocaleMessage = messages[locale]
412+
if (namespace && isLocaleMessageDictionary(targetLocaleMessage)) {
407413
const ref1 = targetLocaleMessage
408414
targetLocaleMessage = targetLocaleMessage[namespace]
409415
stack.push({ key: namespace, ref: ref1 })
410416
}
411-
if (filename && targetLocaleMessage[filename]) {
417+
if (filename && isLocaleMessageDictionary(targetLocaleMessage)) {
412418
const ref2 = targetLocaleMessage
413419
targetLocaleMessage = targetLocaleMessage[filename]
414420
stack.push({ key: filename, ref: ref2 })

types/index.d.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,13 @@ export type Locale = string
2424
* }
2525
* }
2626
*/
27+
28+
export type LocaleMessageDictionary = {
29+
[property: string]: LocaleMessage
30+
}
2731
export type LocaleMessage =
2832
| string
29-
| { [property: string]: LocaleMessage }
33+
| LocaleMessageDictionary
3034
| LocaleMessage[]
3135
export type LocaleMessages = Record<Locale, LocaleMessage>
3236

0 commit comments

Comments
 (0)