Pular para o conteúdo
i18n-error-base
Português (Brasil)
Esc
↑↓navegar↵abrir⌘Jpré-visualizar
Nesta página

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

  1. Pega o lang de getGlobalConfig() (quando não configurado, "en").
  2. Executa, com o meta, a função registrada para essa classe e esse idioma.
  3. Sem registro, usa a mensagem padrão.
  4. 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 com setGlobalConfig({ lang }).
  • Sem normalização de códigos nem cadeia de fallback (ex.: en-US → en). Idiomas sem registro usam a mensagem padrão.

Esta página foi útil?