---
title: API referenca
description: Specifikacija za I18nErrorBase, setErrorMessage i povezane tipove.
---

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

Osnovna klasa za proširenje `Error`. `message` se razrješava prema `lang`.

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

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

### Parametri tipa [#type-params]

| Prop | Type | Default | Description |
| ---- | ---- | ------- | ----------- |
| `TMeta` | `ErrorMeta \| undefined` | `ErrorMeta \| undefined` | Tip `meta`. Kad se ne koristi, navedite `undefined`. |

### Statička svojstva [#static-props]

| Prop | Type | Default | Description |
| ---- | ---- | ------- | ----------- |
| `prefix?` | `string` | `undefined` | Dodaje se na početak razriješene poruke. |

### Svojstva instance [#instance-props]

| Prop | Type | Description |
| ---- | ---- | ----------- |
| `meta` | `TMeta` | Pomoćne info iz konstruktora. Mogu se čitati i pisati. |
| `message` | `string` | Poruka razriješena prema `lang`. Može se nabrojiti. |
| `cause` | `unknown` | Uzrok iz `ErrorOptions`. Standardno svojstvo `Error`. |

### Konstruktor [#constructor]

Ako `TMeta` isključuje `undefined`, `meta` je obavezan.

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

Ako je `TMeta` `undefined`, `meta` se može izostaviti.

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

| Parametar | Tip | Opis |
| --------- | --- | ---- |
| `meta` | `TMeta` | Pomoćne info za generiranje poruke. |
| `message` | `string \| MessageFactory<TMeta>` | Zadana poruka za neregistrirane jezike. Funkcije primaju `meta`. |
| `options` | `ErrorOptions` | Opcije kompatibilne s 2. argumentom `Error` (npr. `{ cause }`). |

### Redoslijed razrješavanja [#resolution-order]

1. Dohvaća `lang` iz `getGlobalConfig()` (`"en"` kad nije postavljeno)
2. Izvršava registriranu funkciju za tu klasu i jezik s `meta`
3. Kad nije registrirano, koristi zadanu poruku
4. Ako je postavljen `static prefix`, dodaje ga na početak

:::note
Registracije su po klasi. Roditeljske se ne nasljeđuju. Registrirajte svaku klasu.
:::

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

Registrira tvorničke funkcije poruka po jeziku.

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

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

| Parametar | Tip | Opis |
| --------- | --- | ---- |
| `reference` | `I18nErrorBaseConstructor` | Klasa koja proširuje `I18nErrorBase`. Ostale su pogreška tipa. |
| `message` | `string \| (meta) => string` | Poruka za registraciju. `meta` se izvodi iz ciljane klase. |
| `lang` | `string \| Iterable<string>` | Ciljani jezik. Jedan kod ili iterabil (npr. polje). |

Ponovna registracija iste klase i jezika prepisuje.

## Tipovi [#types]

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

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

Zadano ograničenje za `TMeta`. Objekt samo za čitanje s proizvoljnim svojstvima.

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

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

Tip izveden iz 2. argumenta `Error`. Može se proslijediti `cause`.

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

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

Funkcija koja stvara poruku iz `meta`. Koristi se i za zadane i za registrirane poruke.

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

Preopterećenja argumenata konstruktora.

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

`meta` se izostavlja samo kad je `TMeta` `undefined`.

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

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

Tip 1. argumenta `setErrorMessage`.

## Napomene [#notes]

- Zadani `lang` je `"en"`. Prebacite s `setGlobalConfig({ lang })`
- Nema normalizacije kodova ni lanca zamjene (npr. `en-US` → `en`). Neregistrirani jezici daju zadanu poruku
