---
title: API-referencia
description: Az I18nErrorBase, a setErrorMessage és a kapcsolódó típusok specifikációja.
---

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

Az `Error` kiterjesztésére szolgáló alaposztály. A `message` a `lang` alapján oldódik fel.

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

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

### Típusparaméterek [#type-params]

| Prop | Típus | Alapértelmezett | Leírás |
| ---- | ---- | ------- | ----------- |
| `TMeta` | `ErrorMeta \| undefined` | `ErrorMeta \| undefined` | A `meta` típusa. Ha nem használja, adjon meg `undefined` értéket. |

### Statikus tulajdonságok [#static-props]

| Prop | Típus | Alapértelmezett | Leírás |
| ---- | ---- | ------- | ----------- |
| `prefix?` | `string` | `undefined` | A feloldott üzenet elejére fűződik. |

### Példánytulajdonságok [#instance-props]

| Prop | Típus | Leírás |
| ---- | ---- | ----------- |
| `meta` | `TMeta` | A konstruktor kiegészítő adatai. Olvasható és írható. |
| `message` | `string` | Az aktuális `lang` alapján feloldva. Felsorolható. |
| `cause` | `unknown` | Az `ErrorOptions` segítségével átadott ok. Az `Error` szabványos tulajdonsága. |

### Konstruktor [#constructor]

Ha a `TMeta` nem tartalmazza az `undefined` értéket, a `meta` kötelező.

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

Ha a `TMeta` értéke `undefined`, a `meta` elhagyható.

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

| Paraméter | Típus | Leírás |
| ------------ | -- | ---- |
| `meta` | `TMeta` | Az üzenetgeneráláshoz használt kiegészítő adatok. |
| `message` | `string \| MessageFactory<TMeta>` | Nem regisztrált nyelvek alapértelmezett üzenete. Függvény esetén a `meta` értéket fogadja. |
| `options` | `ErrorOptions` | Az `Error` második argumentumával kompatibilis opciók (pl. `{ cause }`). |

### Feloldási sorrend [#resolution-order]

1. Lekéri a `getGlobalConfig()` `lang` értékét (`"en"` beállítás hiányában)
2. Végrehajtja az adott osztályhoz és nyelvhez regisztrált függvényt a `meta` átadásával
3. Ha nincs regisztráció, az alapértelmezett üzenetet használja
4. Ha van `static prefix`, az elejére fűzi

:::note
A regisztráció osztályonként különül el. A szülő regisztrációja nem öröklődik. Minden osztályhoz külön regisztráljon.
:::

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

Nyelvenkénti üzenetkészítő függvényeket regisztrál.

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

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

| Paraméter | Típus | Leírás |
| ------------ | -- | ---- |
| `reference` | `I18nErrorBaseConstructor` | Az `I18nErrorBase` osztályból öröklő osztály. Más osztályok típushibát okoznak. |
| `message` | `string \| (meta) => string` | A regisztrálandó üzenet. A `meta` típusa a célosztályból következtethető. |
| `lang` | `string \| Iterable<string>` | Célnyelv. Egyetlen kód vagy iterálható objektum (pl. tömb). |

Azonos osztály és nyelv újbóli regisztrálása felülírja a bejegyzést.

## Típusok [#types]

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

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

A `TMeta` alapértelmezett korlátja. Tetszőleges tulajdonságú, csak olvasható objektum.

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

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

Az `Error` második argumentumából származtatott típus. `cause` értéket adhat át.

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

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

A `meta` alapján üzenetet generáló függvény. Alapértelmezett és regisztrált üzenetekhez egyaránt használható.

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

A konstruktorargumentumok túlterhelései.

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

A `meta` csak akkor hagyható el, ha a `TMeta` értéke `undefined`.

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

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

A `setErrorMessage` első argumentumának típusa.

## Megjegyzések [#notes]

- A `message` feloldásához használt `lang` alapértelmezett értéke `"en"`. Váltson a `setGlobalConfig({ lang })` segítségével
- Nincs nyelvkód-normalizálás vagy tartalék lánc (pl. `en-US` → `en`). A nem regisztrált nyelvek az alapértelmezett üzenetet kapják
