@@ -46,7 +46,9 @@ import type {
4646 SchemaParams ,
4747 LocaleParams ,
4848 PickupLocales ,
49- FallbackLocales
49+ FallbackLocales ,
50+ IsEmptyObject ,
51+ RemoveIndexSignature
5052} from './types'
5153import type { LocaleFallbacker } from './fallbacker'
5254
@@ -91,6 +93,37 @@ export type LocaleMessages<
9193 Message = string // eslint-disable-line @typescript-eslint/no-unused-vars
9294> = LocaleRecord < UnionToTuple < Locales > , Schema >
9395
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+
94127export type CoreMissingHandler < Message = string > = (
95128 context : CoreContext < Message > ,
96129 locale : Locale ,
@@ -155,7 +188,7 @@ export interface CoreOptions<
155188 datetime ?: unknown
156189 number ?: unknown
157190 } = {
158- message : LocaleMessage < Message > ,
191+ message : DefaultCoreLocaleMessageSchema ,
159192 datetime : DateTimeFormat ,
160193 number : NumberFormat
161194 } ,
@@ -181,7 +214,7 @@ export interface CoreOptions<
181214 : Locales extends string
182215 ? Locales
183216 : Locale ,
184- MessageSchema = Schema extends { message : infer M } ? M : LocaleMessage < Message > ,
217+ MessageSchema = Schema extends { message : infer M } ? M : DefaultCoreLocaleMessageSchema ,
185218 DateTimeSchema = Schema extends { datetime : infer D } ? D : DateTimeFormat ,
186219 NumberSchema = Schema extends { number : infer N } ? N : NumberFormat ,
187220 _Messages extends LocaleMessages <
0 commit comments