---
title: Αναφορά API
description: Προδιαγραφές των I18nErrorBase, setErrorMessage και των σχετικών τύπων.
---

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

Η βασική κλάση για επέκταση του `Error`. Το `message` επιλύεται ανάλογα με τη `lang`.

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

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

### Παράμετροι τύπου [#type-params]

| Prop | Type | Default | Description |
| ---- | ---- | ------- | ----------- |
| `TMeta` | `ErrorMeta \| undefined` | `ErrorMeta \| undefined` | Ο τύπος του `meta`. Αν δεν το χρησιμοποιείτε, δώστε `undefined`. |

### Στατικές ιδιότητες [#static-props]

| Prop | Type | Default | Description |
| ---- | ---- | ------- | ----------- |
| `prefix?` | `string` | `undefined` | Συνδέεται στην αρχή του επιλυμένου μηνύματος. |

### Ιδιότητες στιγμιότυπου [#instance-props]

| Prop | Type | Description |
| ---- | ---- | ----------- |
| `meta` | `TMeta` | Βοηθητική πληροφορία του κατασκευαστή. Διαβάζεται και γράφεται. |
| `message` | `string` | Το μήνυμα που επιλύεται ανάλογα με τη `lang`. Είναι απαριθμήσιμο. |
| `cause` | `unknown` | Η αιτία από το `ErrorOptions`. Τυπική ιδιότητα του `Error`. |

### Κατασκευαστής [#constructor]

Όταν το `TMeta` αποκλείει το `undefined`, το `meta` είναι υποχρεωτικό.

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

Όταν το `TMeta` είναι `undefined`, το `meta` μπορεί να παραλειφθεί.

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

| Παράμετρος | Τύπος | Περιγραφή |
| ---------- | ----- | --------- |
| `meta` | `TMeta` | Βοηθητική πληροφορία για δημιουργία μηνυμάτων. |
| `message` | `string \| MessageFactory<TMeta>` | Το προεπιλεγμένο μήνυμα για γλώσσες χωρίς καταχώρηση. Αν είναι συνάρτηση, λαμβάνει το `meta`. |
| `options` | `ErrorOptions` | Επιλογές συμβατές με το 2ο όρισμα του `Error` (π.χ. `{ cause }`). |

### Σειρά επίλυσης [#resolution-order]

1. Λαμβάνει τη `lang` του `getGlobalConfig()` (`"en"` όταν δεν έχει οριστεί)
2. Εκτελεί την καταχωρημένη συνάρτηση για αυτή την κλάση και γλώσσα με `meta`
3. Όταν δεν υπάρχει καταχώρηση, χρησιμοποιεί το προεπιλεγμένο μήνυμα
4. Αν έχει οριστεί `static prefix`, το συνδέει στην αρχή

:::note
Οι καταχωρήσεις είναι ανά κλάση. Οι γονικές δεν κληρονομούνται. Καταχωρίστε κάθε κλάση.
:::

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

Καταχωρεί συναρτήσεις εργοστασίου μηνυμάτων ανά γλώσσα.

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

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

| Παράμετρος | Τύπος | Περιγραφή |
| ---------- | ----- | --------- |
| `reference` | `I18nErrorBaseConstructor` | Κλάση που επεκτείνει το `I18nErrorBase`. Οι άλλες είναι σφάλμα τύπου. |
| `message` | `string \| (meta) => string` | Το μήνυμα προς καταχώρηση. Το `meta` συνάγεται από την κλάση-στόχο. |
| `lang` | `string \| Iterable<string>` | Η γλώσσα-στόχος. Ένας κωδικός ή επαναλήψιμο (π.χ. πίνακας). |

Η εκ νέου καταχώρηση για την ίδια κλάση και γλώσσα αντικαθιστά.

## Τύποι [#types]

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

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

Ο προεπιλεγμένος περιορισμός του `TMeta`. Αντικείμενο μόνο για ανάγνωση με αυθαίρετες ιδιότητες.

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

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

Τύπος από το 2ο όρισμα του `Error`. Μπορείτε να δώσετε `cause`.

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

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

Συνάρτηση που δημιουργεί μήνυμα από το `meta`. Χρησιμοποιείται και για προεπιλεγμένα και για καταχωρημένα μηνύματα.

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

Υπερφορτώσεις ορισμάτων του κατασκευαστή.

```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` μόνο όταν το `TMeta` είναι `undefined`.

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

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

Ο τύπος του 1ου ορίσματος του `setErrorMessage`.

## Σημειώσεις [#notes]

- Η προεπιλογή `lang` είναι `"en"`. Αλλάξτε με `setGlobalConfig({ lang })`
- Χωρίς κανονικοποίηση κωδικών ή αλυσίδα εναλλακτικής (π.χ. `en-US` → `en`). Οι μη καταχωρημένες γλώσσες δίνουν το προεπιλεγμένο μήνυμα
