Довідник 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 |
Допоміжні дані з конструктора. Доступні для читання й запису. |
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 |
Допоміжні дані для генерації повідомлень. |
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). Незареєстровані мови дають повідомлення за замовчуванням