Referência da API
Especificação de I18nErrorBase, setErrorMessage e dos tipos relacionados.
I18nErrorBase
Classe base para você herdar de Error. A message é resolvida de acordo com o 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 |
O tipo do meta. Passe undefined quando você não for usar. |
Propriedades estáticas
| Prop | Type | Default | Description |
|---|---|---|---|
prefix? |
string |
undefined |
Colocado no início da mensagem resolvida. |
Propriedades de instância
| Prop | Type | Description |
|---|---|---|
meta |
TMeta |
Informações extras do construtor. Você pode ler e escrever. |
message |
string |
Resolvida de acordo com o lang. É enumerável. |
cause |
unknown |
Causa passada em ErrorOptions. Propriedade padrão de Error. |
Construtor
Quando TMeta não inclui undefined, o meta é obrigatório.
new MyError(meta, message, options?)
Quando TMeta é undefined, você pode omitir o meta.
new MyError(message, options?)
new MyError(meta, message, options?)
| Parâmetro | Tipo | Descrição |
|---|---|---|
meta |
TMeta |
Informações extras para gerar a mensagem. |
message |
string | MessageFactory<TMeta> |
Mensagem padrão para idiomas sem registro. Funções recebem o meta. |
options |
ErrorOptions |
Opções compatíveis com o segundo argumento de Error (como { cause }). |
Ordem de resolução
- Pega o
langdegetGlobalConfig()(quando não configurado,"en"). - Executa, com o
meta, a função registrada para essa classe e esse idioma. - Sem registro, usa a mensagem padrão.
- Se houver
static prefix, coloca no início.
setErrorMessage
Registra a função que cria a mensagem de cada idioma.
import { setErrorMessage } from "i18n-error-base";
setErrorMessage(MyError, (meta) => `...: ${meta.code}`, "ja");
| Parâmetro | Tipo | Descrição |
|---|---|---|
reference |
I18nErrorBaseConstructor |
Classe que herda de I18nErrorBase. Quem não herda dá erro de tipo. |
message |
string | (meta) => string |
Mensagem a registrar. O tipo de meta é inferido da classe que você indicar. |
lang |
string | Iterable<string> |
Idioma de destino. Um único código ou um iterável (como um array). |
Registrar de novo a mesma classe e idioma sobrescreve.
Tipos
ErrorMeta
type ErrorMeta = {
readonly [prop: string]: unknown;
};
Restrição padrão de TMeta. Objeto somente leitura com propriedades livres.
ErrorOptions
type ErrorOptions =
ConstructorParameters<typeof Error> extends [
message?: unknown,
options?: (infer TOptions) | undefined,
]
? TOptions
: { readonly cause?: unknown };
Tipo derivado do segundo argumento de Error. Você pode passar cause.
MessageFactory<TMeta>
interface MessageFactory<TMeta extends ErrorMeta | undefined = ErrorMeta | undefined> {
(meta: TMeta): string;
}
Função que gera a mensagem a partir do meta. Vale para a padrão e para as registradas.
I18nErrorBaseParams<TMeta>
Sobrecargas de argumentos do construtor.
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];
Só dá para omitir o meta quando TMeta é undefined.
I18nErrorBaseConstructor
interface I18nErrorBaseConstructor {
new (...args: any): I18nErrorBase;
}
Tipo do primeiro argumento de setErrorMessage.
Notas
- O padrão de
langé"en". Troque comsetGlobalConfig({ lang }). - Sem normalização de códigos nem cadeia de fallback (ex.:
en-US→en). Idiomas sem registro usam a mensagem padrão.