---
title: API-referens
description: Specifikationer för I18nErrorBase, setErrorMessage och relaterade typer.
---

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

En basklass för att utöka `Error`. `message` löses enligt `lang`.

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

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

### Typparametrar [#type-params]

| Prop | Type | Default | Description |
| ---- | ---- | ------- | ----------- |
| `TMeta` | `ErrorMeta \| undefined` | `ErrorMeta \| undefined` | Typen för `meta`. Ange `undefined` när den inte används. |

### Statiska egenskaper [#static-props]

| Prop | Type | Default | Description |
| ---- | ---- | ------- | ----------- |
| `prefix?` | `string` | `undefined` | Läggs till i början av det lösta meddelandet. |

### Instansegenskaper [#instance-props]

| Prop | Type | Description |
| ---- | ---- | ----------- |
| `meta` | `TMeta` | Hjälpeinfo från konstruktorn. Kan läsas och skrivas. |
| `message` | `string` | Löses enligt `lang`. Uppräkningsbart. |
| `cause` | `unknown` | Orsaken från `ErrorOptions`. En standardegenskap på `Error`. |

### Konstruktor [#constructor]

När `TMeta` inte omfattar `undefined` är `meta` obligatorisk.

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

När `TMeta` är `undefined` kan `meta` utelämnas.

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

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `meta` | `TMeta` | Hjälpeinfo för meddelandegenerering. |
| `message` | `string \| MessageFactory<TMeta>` | Standardmeddelandet för språk utan registrering. Funktioner tar emot `meta`. |
| `options` | `ErrorOptions` | Alternativ kompatibla med det andra argumentet till `Error` (t.ex. `{ cause }`). |

### Upplösningsordning [#resolution-order]

1. Hämtar `lang` från `getGlobalConfig()` (`"en"` när den inte är satt)
2. Kör den registrerade funktionen för den klassen och det språket med `meta`
3. När oregistrerat, använd standardmeddelandet
4. Om `static prefix` är satt, lägg det till i början

:::note
Registreringar är per klass. Registreringar på en föräldraklass ärvs inte. Registrera varje klass.
:::

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

Registrerar meddelandefunktioner per språk.

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

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

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `reference` | `I18nErrorBaseConstructor` | En klass som ärver `I18nErrorBase`. Klasser utan arv ger ett typfel. |
| `message` | `string \| (meta) => string` | Meddelandet som ska registreras. `meta` härleds från målklassen. |
| `lang` | `string \| Iterable<string>` | Målspråket. En enskild kod eller ett itererbart objekt (t.ex. en array). |

Omregistrering av samma klass och språk skriver över.

## Typer [#types]

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

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

Standardbegränsningen för `TMeta`. Ett skrivskyddat objekt med godtyckliga egenskaper.

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

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

En typ härledd från det andra argumentet till `Error`. Du kan skicka `cause`.

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

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

En funktion som skapar ett meddelande från `meta`. Används för både standard- och registrerade meddelanden.

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

Konstruktorns argumentöverlagringar.

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

Utelämna `meta` endast när `TMeta` är `undefined`.

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

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

Typen för det första argumentet till `setErrorMessage`.

## Anteckningar [#notes]

- Standard-`lang` är `"en"`. Växla den explicit med `setGlobalConfig({ lang })`
- Ingen normalisering av språkkoder eller fallback-kedja (t.ex. `en-US` till `en`). Oregistrerade språk använder standardmeddelandet
