---
title: API-Referenz
description: Spezifikation von I18nErrorBase, setErrorMessage und der zugehörigen Typen.
---

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

Die Basisklasse zur Erweiterung von `Error`. `message` wird entsprechend `lang` aufgelöst.

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

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

### Typparameter [#type-params]

| Prop | Type | Default | Description |
| ---- | ---- | ------- | ----------- |
| `TMeta` | `ErrorMeta \| undefined` | `ErrorMeta \| undefined` | Der Typ von `meta`. Geben Sie `undefined` an, wenn Sie ihn nicht verwenden. |

### Statische Eigenschaften [#static-props]

| Prop | Type | Default | Description |
| ---- | ---- | ------- | ----------- |
| `prefix?` | `string` | `undefined` | Wird dem aufgelösten Nachrichtenanfang vorangestellt. |

### Instanzeigenschaften [#instance-props]

| Prop | Type | Description |
| ---- | ---- | ----------- |
| `meta` | `TMeta` | Zusatzinformationen des Konstruktors. Lesbar und schreibbar. |
| `message` | `string` | Wird entsprechend `lang` aufgelöst. Aufzählbar. |
| `cause` | `unknown` | Die Ursache aus `ErrorOptions`. Eine Standard-Eigenschaft von `Error`. |

### Konstruktor [#constructor]

Wenn `TMeta` kein `undefined` enthält, ist `meta` erforderlich.

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

Wenn `TMeta` den Wert `undefined` hat, kann `meta` weggelassen werden.

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

| Parameter | Typ | Beschreibung |
| --------- | --- | ------------ |
| `meta` | `TMeta` | Zusatzinformationen zur Nachrichtenerzeugung. |
| `message` | `string \| MessageFactory<TMeta>` | Standardnachricht für Sprachen ohne Registrierung. Funktionen erhalten `meta`. |
| `options` | `ErrorOptions` | Optionen, kompatibel mit dem zweiten Argument von `Error` (z. B. `{ cause }`). |

### Auflösungsreihenfolge [#resolution-order]

1. Holt `lang` aus `getGlobalConfig()` (wenn nicht gesetzt, `"en"`).
2. Führt die registrierte Funktion für diese Klasse und Sprache mit `meta` aus.
3. Wenn nicht registriert, wird die Standardnachricht verwendet.
4. Falls `static prefix` gesetzt ist, wird es vorangestellt.

:::note
Registrierungen werden pro Klasse unterschieden. Eltern-Registrierungen werden nicht vererbt. Registrieren Sie jede Klasse.
:::

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

Registriert Nachrichtenerzeugungsfunktionen pro Sprache.

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

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

| Parameter | Typ | Beschreibung |
| --------- | --- | ------------ |
| `reference` | `I18nErrorBaseConstructor` | Eine Klasse, die `I18nErrorBase` erweitert. Klassen ohne diese Vererbung führen zu einem Typfehler. |
| `message` | `string \| (meta) => string` | Die zu registrierende Nachricht. Der Typ von `meta` wird aus der Zielklasse abgeleitet. |
| `lang` | `string \| Iterable<string>` | Die Zielsprache. Ein einzelner Code oder ein iterierbares Objekt (z. B. ein Array). |

Eine erneute Registrierung derselben Klasse und Sprache überschreibt den Eintrag.

## Typen [#types]

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

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

Die Standard-Einschränkung für `TMeta`. Ein schreibgeschütztes Objekt mit beliebigen Eigenschaften.

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

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

Ein vom zweiten Argument von `Error` abgeleiteter Typ. Es kann `cause` übergeben werden.

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

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

Eine Funktion, die aus `meta` eine Nachricht erzeugt. Wird sowohl für Standard- als auch für registrierte Nachrichten verwendet.

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

Konstruktorargument-Überladungen.

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

Die Kurzform ohne `meta` ist nur zulässig, wenn `TMeta` den Wert `undefined` hat.

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

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

Der Typ des ersten Arguments von `setErrorMessage`.

## Hinweise [#notes]

- Der Standardwert von `lang` lautet `"en"`. Wechseln Sie ihn mit `setGlobalConfig({ lang })`.
- Es gibt weder eine Normalisierung von Sprachcodes noch eine Fallback-Kette (z. B. `en-US` → `en`). Nicht registrierte Sprachen ergeben die Standardnachricht.
