Перейти до вмісту
i18n-error-base
Українська
Esc
↑↓навігація↵відкрити⌘Jперегляд
На цій сторінці

Довідник 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 }).

Порядок розв’язання

  1. Отримує lang із getGlobalConfig() ("en", якщо не налаштовано)
  2. Виконує зареєстровану функцію для цього класу й мови з meta
  3. Якщо не зареєстровано, використовує повідомлення за замовчуванням
  4. Якщо є 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). Незареєстровані мови дають повідомлення за замовчуванням

Чи була ця сторінка корисною?