---
title: Referință API
description: Specificațiile pentru I18nErrorBase, setErrorMessage și tipurile asociate.
---

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

Clasă de bază pentru extinderea `Error`. `message` se rezolvă în funcție de `lang`.

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

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

### Parametri de tip [#type-params]

| Prop | Type | Default | Description |
| ---- | ---- | ------- | ----------- |
| `TMeta` | `ErrorMeta \| undefined` | `ErrorMeta \| undefined` | Tipul `meta`. Specificați `undefined` când nu este folosit. |

### Proprietăți statice [#static-props]

| Prop | Type | Default | Description |
| ---- | ---- | ------- | ----------- |
| `prefix?` | `string` | `undefined` | Adăugat la începutul mesajului rezolvat. |

### Proprietăți de instanță [#instance-props]

| Prop | Type | Description |
| ---- | ---- | ----------- |
| `meta` | `TMeta` | Datele auxiliare ale constructorului. Pot fi citite și scrise. |
| `message` | `string` | Rezolvat în funcție de `lang`. Enumerabil. |
| `cause` | `unknown` | Cauza din `ErrorOptions`. Proprietate standard a `Error`. |

### Constructor [#constructor]

Când `TMeta` nu include `undefined`, `meta` este obligatoriu.

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

Când `TMeta` este `undefined`, `meta` poate fi omis.

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

| Parametru | Tip | Descriere |
| --------- | --- | --------- |
| `meta` | `TMeta` | Datele auxiliare pentru generarea mesajului. |
| `message` | `string \| MessageFactory<TMeta>` | Mesajul implicit pentru limbile fără înregistrare. Funcțiile primesc `meta`. |
| `options` | `ErrorOptions` | Opțiuni compatibile cu al doilea argument al `Error` (cum ar fi `{ cause }`). |

### Ordinea de rezolvare [#resolution-order]

1. Obține `lang` din `getGlobalConfig()` (`"en"` când nu este setat)
2. Execută funcția înregistrată pentru acea clasă și limbă, cu `meta`
3. Când nu există înregistrare, folosește mesajul implicit
4. Dacă `static prefix` este setat, îl adaugă la început

:::note
Înregistrările sunt per clasă. Înregistrările părintelui nu se moștenesc. Înregistrați fiecare clasă.
:::

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

Înregistrează funcții de creare a mesajelor pentru fiecare limbă.

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

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

| Parametru | Tip | Descriere |
| --------- | --- | --------- |
| `reference` | `I18nErrorBaseConstructor` | O clasă care extinde `I18nErrorBase`. Alte clase sunt eroare de tip. |
| `message` | `string \| (meta) => string` | Mesajul de înregistrat. `meta` este dedus din clasa țintă. |
| `lang` | `string \| Iterable<string>` | Limba țintă. Un singur cod sau un obiect iterabil (cum ar fi un tablou). |

Reînregistrarea aceleiași clase și limbi suprascrie intrarea.

## Tipuri [#types]

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

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

Constrângerea implicită pentru `TMeta`. Un obiect readonly cu proprietăți arbitrare.

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

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

Un tip derivat din al doilea argument al `Error`. Puteți transmite `cause`.

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

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

O funcție care generează un mesaj din `meta`. Folosită pentru mesajele implicite și cele înregistrate.

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

Supraîncărcările argumentelor constructorului.

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

Omiteți `meta` doar când `TMeta` este `undefined`.

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

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

Tipul primului argument al `setErrorMessage`.

## Note [#notes]

- `lang` implicit este `"en"`. Comutați cu `setGlobalConfig({ lang })`
- Fără normalizarea codurilor de limbă și fără lanț de fallback (de ex. `en-US` → `en`). Limbile neînregistrate folosesc mesajul implicit
