Referencia de la API
Especificación de `I18nErrorBase`, `setErrorMessage` y los tipos relacionados.
I18nErrorBase
Clase base para heredar de Error. message se resuelve según lang.
import { I18nErrorBase } from "i18n-error-base";
class MyError extends I18nErrorBase<{ code: string }> {}
Parámetros de tipo
| Prop | Type | Default | Description |
|---|---|---|---|
TMeta |
ErrorMeta | undefined |
ErrorMeta | undefined |
Tipo de meta. Si no se usa, especifique undefined. |
Propiedades estáticas
| Prop | Type | Default | Description |
|---|---|---|---|
prefix? |
string |
undefined |
Se antepone al mensaje resuelto. |
Propiedades de instancia
| Prop | Type | Description |
|---|---|---|
meta |
TMeta |
Información adicional del constructor. Se puede leer y escribir. |
message |
string |
Se resuelve según lang. Es enumerable. |
cause |
unknown |
Causa pasada con ErrorOptions. Propiedad estándar de Error. |
Constructor
Si TMeta no incluye undefined, meta es obligatorio.
new MyError(meta, message, options?)
Si TMeta es undefined, se puede omitir meta.
new MyError(message, options?)
new MyError(meta, message, options?)
| Parámetro | Tipo | Descripción |
|---|---|---|
meta |
TMeta |
Información adicional para generar mensajes. |
message |
string | MessageFactory<TMeta> |
Mensaje predeterminado para idiomas no registrados. Las funciones reciben meta. |
options |
ErrorOptions |
Opciones compatibles con el segundo argumento de Error (como { cause }). |
Orden de resolución
- Obtiene
langdegetGlobalConfig()(si no está configurado,"en"). - Ejecuta con
metala función registrada para esa clase y ese idioma. - Si no está registrado, usa el mensaje predeterminado.
- Si existe
static prefix, lo antepone.
setErrorMessage
Registra funciones creadoras de mensajes por idioma.
import { setErrorMessage } from "i18n-error-base";
setErrorMessage(MyError, (meta) => `...: ${meta.code}`, "ja");
| Parámetro | Tipo | Descripción |
|---|---|---|
reference |
I18nErrorBaseConstructor |
Clase que hereda de I18nErrorBase. Las que no heredan producen un error de tipo. |
message |
string | (meta) => string |
Mensaje a registrar. El tipo de meta se infiere de la clase objetivo. |
lang |
string | Iterable<string> |
Idioma objetivo. Un único código o un iterable (como un arreglo). |
Volver a registrar la misma clase e idioma sobrescribe.
Tipos
ErrorMeta
type ErrorMeta = {
readonly [prop: string]: unknown;
};
Restricción predeterminada de TMeta. Objeto de solo lectura con propiedades arbitrarias.
ErrorOptions
type ErrorOptions =
ConstructorParameters<typeof Error> extends [
message?: unknown,
options?: (infer TOptions) | undefined,
]
? TOptions
: { readonly cause?: unknown };
Tipo derivado del segundo argumento de Error. Permite pasar cause.
MessageFactory<TMeta>
interface MessageFactory<TMeta extends ErrorMeta | undefined = ErrorMeta | undefined> {
(meta: TMeta): string;
}
Función que genera un mensaje a partir de meta. Se usa tanto para el predeterminado como para los registrados.
I18nErrorBaseParams<TMeta>
Sobrecargas de argumentos del constructor.
type I18nErrorBaseParams<TMeta extends ErrorMeta | undefined = ErrorMeta | undefined> =
[TMeta] extends [undefined]
?
| [message: string | MessageFactory<TMeta>, options?: ErrorOptions | undefined]
| [meta: undefined, message: string | MessageFactory<TMeta>, options?: ErrorOptions | undefined]
: [meta: TMeta, message: string | MessageFactory<TMeta>, options?: ErrorOptions | undefined];
La forma abreviada sin meta solo se permite cuando TMeta es undefined.
I18nErrorBaseConstructor
interface I18nErrorBaseConstructor {
new (...args: any): I18nErrorBase;
}
Tipo del primer argumento de setErrorMessage.
Notas
- El valor predeterminado de
langes"en". Cámbielo consetGlobalConfig({ lang }). - No hay normalización de códigos ni cadena de reserva (p. ej.:
en-US→en). Los idiomas no registrados usan el mensaje predeterminado.