API справка
Спецификации за I18nErrorBase, setErrorMessage и свързаните типове.
I18nErrorBase
Базов клас за разширяване на Error. message се разрешава според lang.
import { I18nErrorBase } from "i18n-error-base";
class MyError extends I18nErrorBase<{ code: string }> {}
Типови параметри
| Prop | Type | Default | Description |
|---|---|---|---|
TMeta |
ErrorMeta | undefined |
ErrorMeta | undefined |
Типът на meta. Задайте undefined, когато не се използва. |
Статични свойства
| Prop | Type | Default | Description |
|---|---|---|---|
prefix? |
string |
undefined |
Добавя се в началото на разрешеното съобщение. |
Свойства на инстанцията
| Prop | Type | Description |
|---|---|---|
meta |
TMeta |
Помощна info от конструктора. Достъпна за четене и писане. |
message |
string |
Съобщението, разрешено според lang. Изброимо. |
cause |
unknown |
Причината от ErrorOptions. Стандартно свойство на Error. |
Конструктор
Когато TMeta изключва undefined, meta е задължително.
new MyError(meta, message, options?)
Когато TMeta е undefined, meta може да се пропусне.
new MyError(message, options?)
new MyError(meta, message, options?)
| Параметър | Тип | Описание |
|---|---|---|
meta |
TMeta |
Помощна info за генериране на съобщения. |
message |
string | MessageFactory<TMeta> |
Съобщение по подразбиране за езици без регистрация. Когато е функция, получава meta. |
options |
ErrorOptions |
Опции, съвместими с 2. аргумент на Error (например { cause }). |
Ред на разрешаване
- Взема
langотgetGlobalConfig()("en"когато не е зададен) - Изпълнява регистрираната функция за този клас и език с
meta - Когато няма регистрация, използва съобщението по подразбиране
- Ако е зададен
static prefix, го добавя в началото
setErrorMessage
Регистрира фабрична функция за съобщения за всеки език.
import { setErrorMessage } from "i18n-error-base";
setErrorMessage(MyError, (meta) => `...: ${meta.code}`, "ja");
| Параметър | Тип | Описание |
|---|---|---|
reference |
I18nErrorBaseConstructor |
Клас, наследяващ I18nErrorBase. Другите са типова грешка. |
message |
string | (meta) => string |
Съобщението за регистриране. meta се извежда от целевия клас. |
lang |
string | Iterable<string> |
Целевият език. Единичен код или итерируем обект (например масив). |
Повторното регистриране на същия клас и език презаписва.
Типове
ErrorMeta
type ErrorMeta = {
readonly [prop: string]: unknown;
};
Ограничението по подразбиране за TMeta. Обект само за четене с произволни свойства.
ErrorOptions
type ErrorOptions =
ConstructorParameters<typeof Error> extends [
message?: unknown,
options?: (infer TOptions) | undefined,
]
? TOptions
: { readonly cause?: unknown };
Тип, изведен от 2. аргумент на Error. Може да се подаде cause.
MessageFactory<TMeta>
interface MessageFactory<TMeta extends ErrorMeta | undefined = ErrorMeta | undefined> {
(meta: TMeta): string;
}
Функция, която създава съобщение от meta. Използва се и за зададени, и за регистрирани съобщения.
I18nErrorBaseParams<TMeta>
Претоварвания на аргументите на конструктора.
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];
Формата без meta е допустима само когато TMeta е undefined.
I18nErrorBaseConstructor
interface I18nErrorBaseConstructor {
new (...args: any): I18nErrorBase;
}
Типът на 1. аргумент на setErrorMessage.
Забележки
langпо подразбиране е"en". Превключете сsetGlobalConfig({ lang })- Няма нормализация на кодовете и няма верига за резервен вариант (напр.
en-US→en). Нерегистрираните езици дават съобщението по подразбиране