@@ -46,7 +46,9 @@ import type {
46
46
SchemaParams ,
47
47
LocaleParams ,
48
48
PickupLocales ,
49
- FallbackLocales
49
+ FallbackLocales ,
50
+ IsEmptyObject ,
51
+ RemoveIndexSignature
50
52
} from './types'
51
53
import type { LocaleFallbacker } from './fallbacker'
52
54
@@ -91,6 +93,37 @@ export type LocaleMessages<
91
93
Message = string // eslint-disable-line @typescript-eslint/no-unused-vars
92
94
> = LocaleRecord < UnionToTuple < Locales > , Schema >
93
95
96
+ /**
97
+ * The type definition of Locale Message for `@intlify/core-base` package
98
+ *
99
+ * @remarks
100
+ * The typealias is used to strictly define the type of the Locale message.
101
+ *
102
+ * @example
103
+ * ```ts
104
+ * // type.d.ts (`.d.ts` file at your app)
105
+ * import { DefineCoreLocaleMessage } from '@intlify/core-base'
106
+ *
107
+ * declare module '@intlify/core-base' {
108
+ * export interface DefineCoreLocaleMessage {
109
+ * title: string
110
+ * menu: {
111
+ * login: string
112
+ * }
113
+ * }
114
+ * }
115
+ * ```
116
+ *
117
+ * @VueI 18nGeneral
118
+ */
119
+ export interface DefineCoreLocaleMessage extends LocaleMessage < string > { } // eslint-disable-line @typescript-eslint/no-empty-interface
120
+
121
+ export type DefaultCoreLocaleMessageSchema <
122
+ Schema = RemoveIndexSignature < {
123
+ [ K in keyof DefineCoreLocaleMessage ] : DefineCoreLocaleMessage [ K ]
124
+ } >
125
+ > = IsEmptyObject < Schema > extends true ? LocaleMessage < string > : Schema
126
+
94
127
export type CoreMissingHandler < Message = string > = (
95
128
context : CoreContext < Message > ,
96
129
locale : Locale ,
@@ -155,7 +188,7 @@ export interface CoreOptions<
155
188
datetime ?: unknown
156
189
number ?: unknown
157
190
} = {
158
- message : LocaleMessage < Message > ,
191
+ message : DefaultCoreLocaleMessageSchema ,
159
192
datetime : DateTimeFormat ,
160
193
number : NumberFormat
161
194
} ,
@@ -181,7 +214,7 @@ export interface CoreOptions<
181
214
: Locales extends string
182
215
? Locales
183
216
: Locale ,
184
- MessageSchema = Schema extends { message : infer M } ? M : LocaleMessage < Message > ,
217
+ MessageSchema = Schema extends { message : infer M } ? M : DefaultCoreLocaleMessageSchema ,
185
218
DateTimeSchema = Schema extends { datetime : infer D } ? D : DateTimeFormat ,
186
219
NumberSchema = Schema extends { number : infer N } ? N : NumberFormat ,
187
220
_Messages extends LocaleMessages <
0 commit comments