---
title: Referenčná príručka API
description: Špecifikácia I18nErrorBase, setErrorMessage a súvisiacich typov.
---

## `I18nErrorBase` [#i18n-error-base]

Základná trieda na dedenie z `Error`. `message` sa vyhodnocuje podľa `lang`.

```ts
import { I18nErrorBase } from "i18n-error-base";

class MyError extends I18nErrorBase<{ code: string }> {}
```

### Parametre typu [#type-params]

| Prop | Type | Default | Description |
| ---- | ---- | ------- | ----------- |
| `TMeta` | `ErrorMeta \| undefined` | `ErrorMeta \| undefined` | Typ `meta`. Ak sa nepoužíva, zadajte `undefined`. |

### Statické vlastnosti [#static-props]

| Prop | Type | Default | Description |
| ---- | ---- | ------- | ----------- |
| `prefix?` | `string` | `undefined` | Pripojí sa na začiatok vyhodnotenej správy. |

### Vlastnosti inštancie [#instance-props]

| Prop | Type | Description |
| ---- | ---- | ----------- |
| `meta` | `TMeta` | Pomocné údaje konštruktora. Možno čítať aj zapisovať. |
| `message` | `string` | Vyhodnocuje sa podľa `lang`. Je enumerovateľná. |
| `cause` | `unknown` | Príčina z `ErrorOptions`. Štandardná vlastnosť `Error`. |

### Konštruktor [#constructor]

Ak `TMeta` nezahŕňa `undefined`, `meta` je povinné.

```ts
new MyError(meta, message, options?)
```

Ak je `TMeta` typu `undefined`, možno `meta` vynechať.

```ts
new MyError(message, options?)
new MyError(meta, message, options?)
```

| Parameter | Typ | Popis |
| --------- | --- | ----- |
| `meta` | `TMeta` | Pomocné údaje na generovanie správy. |
| `message` | `string \| MessageFactory<TMeta>` | Predvolená správa pre jazyky bez registrácie. Funkcie prijímajú `meta`. |
| `options` | `ErrorOptions` | Voľby kompatibilné s druhým argumentom `Error` (napr. `{ cause }`). |

### Poradie vyhodnotenia [#resolution-order]

1. Získa `lang` z `getGlobalConfig()` (`"en"`, ak nie je nastavené)
2. Spustí registrovanú funkciu pre danú triedu a jazyk s `meta`
3. Ak nie je registrovaná, použije predvolenú správu
4. Ak je `static prefix`, pripojí ho na začiatok

:::note
Registrácie sú viazané na triedu. Registrácia rodiča sa nededí. Registrujte každú triedu.
:::

## `setErrorMessage` [#set-error-message]

Registruje funkcie na tvorbu správy pre jednotlivé jazyky.

```ts
import { setErrorMessage } from "i18n-error-base";

setErrorMessage(MyError, (meta) => `...: ${meta.code}`, "ja");
```

| Parameter | Typ | Popis |
| --------- | --- | ----- |
| `reference` | `I18nErrorBaseConstructor` | Trieda dediaca z `I18nErrorBase`. Ostatné triedy sú typovou chybou. |
| `message` | `string \| (meta) => string` | Správa na registráciu. `meta` sa odvodí z cieľovej triedy. |
| `lang` | `string \| Iterable<string>` | Cieľový jazyk. Jednotlivý kód alebo iterovateľný objekt (napr. pole). |

Opätovná registrácia rovnakej triedy a jazyka hodnotu prepíše.

## Typy [#types]

### `ErrorMeta` [#error-meta]

```ts
type ErrorMeta = {
  readonly [prop: string]: unknown;
};
```

Predvolené obmedzenie pre `TMeta`. Objekt len na čítanie s ľubovoľnými vlastnosťami.

### `ErrorOptions` [#error-options]

```ts
type ErrorOptions =
  ConstructorParameters<typeof Error> extends [
    message?: unknown,
    options?: (infer TOptions) | undefined,
  ]
    ? TOptions
    : { readonly cause?: unknown };
```

Typ odvodený z druhého argumentu `Error`. Možno odovzdať `cause`.

### `MessageFactory<TMeta>` [#message-factory]

```ts
interface MessageFactory<TMeta extends ErrorMeta | undefined = ErrorMeta | undefined> {
  (meta: TMeta): string;
}
```

Funkcia generujúca správu z `meta`. Používa sa pre predvolené aj registrované správy.

### `I18nErrorBaseParams<TMeta>` [#i18n-error-base-params]

Preťaženie argumentov konštruktora.

```ts
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];
```

Bez `meta` len vtedy, ak je `TMeta` typu `undefined`.

### `I18nErrorBaseConstructor` [#i18n-error-base-constructor]

```ts
interface I18nErrorBaseConstructor {
  new (...args: any): I18nErrorBase;
}
```

Typ prvého argumentu `setErrorMessage`.

## Poznámky [#notes]

- Predvolené `lang` je `"en"`. Prepínajte pomocou `setGlobalConfig({ lang })`
- Bez normalizácie kódov jazykov a fallback reťazca (napr. `en-US` → `en`). Neregistrované jazyky používajú predvolenú správu
