---
title: API-referanse
description: Spesifikasjoner for I18nErrorBase, setErrorMessage og relaterte typer.
---

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

En baseklasse for å utvide `Error`. `message` løses etter `lang`.

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

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

### Typeparametre [#type-params]

| Prop | Type | Default | Description |
| ---- | ---- | ------- | ----------- |
| `TMeta` | `ErrorMeta \| undefined` | `ErrorMeta \| undefined` | Typen for `meta`. Angi `undefined` når den ikke brukes. |

### Statiske egenskaper [#static-props]

| Prop | Type | Default | Description |
| ---- | ---- | ------- | ----------- |
| `prefix?` | `string` | `undefined` | Legges til foran den løste meldingen. |

### Instansegenskaper [#instance-props]

| Prop | Type | Description |
| ---- | ---- | ----------- |
| `meta` | `TMeta` | Hjelpeinfo fra konstruktøren. Kan leses og skrives. |
| `message` | `string` | Løses etter `lang`. Enumerable. |
| `cause` | `unknown` | Årsaken fra `ErrorOptions`. En standard `Error`-egenskap. |

### Konstruktør [#constructor]

Når `TMeta` ikke omfatter `undefined`, er `meta` påkrevd.

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

Når `TMeta` er `undefined`, kan `meta` utelates.

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

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `meta` | `TMeta` | Hjelpeinfo for meldingsgenerering. |
| `message` | `string \| MessageFactory<TMeta>` | Standardmeldingen for språk uten registrering. Funksjoner mottar `meta`. |
| `options` | `ErrorOptions` | Alternativer kompatible med det andre argumentet til `Error` (f.eks. `{ cause }`). |

### Løsningsrekkefølge [#resolution-order]

1. Hent `lang` fra `getGlobalConfig()` (`"en"` når den ikke er satt)
2. Kjør den registrerte funksjonen for den klassen og det språket med `meta`
3. Når uregistrert, bruk standardmeldingen
4. Hvis `static prefix` er satt, legg det til foran

:::note
Registreringer er per klasse. Registreringer på en foreldreklasse arves ikke. Registrer hver klasse.
:::

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

Registrerer meldingsfunksjoner per språk.

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

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

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `reference` | `I18nErrorBaseConstructor` | En klasse som arver fra `I18nErrorBase`. Klasser uten arv er en typefeil. |
| `message` | `string \| (meta) => string` | Meldingen som skal registreres. `meta` utledes fra målklassen. |
| `lang` | `string \| Iterable<string>` | Målspråket. En enkelt kode eller et itererbart objekt (f.eks. en matrise). |

Å registrere samme klasse og språk på nytt overskriver.

## Typer [#types]

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

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

Standardbegrensningen for `TMeta`. Et skrivebeskyttet objekt med vilkårlige egenskaper.

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

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

En type avledet fra det andre argumentet til `Error`. Du kan sende `cause`.

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

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

En funksjon som lager en melding fra `meta`. Brukes for både standard- og registrerte meldinger.

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

Konstruktørargumentenes overloads.

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

Utelat `meta` bare når `TMeta` er `undefined`.

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

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

Typen til det første argumentet til `setErrorMessage`.

## Merknader [#notes]

- Standard-`lang` er `"en"`. Bytt den eksplisitt med `setGlobalConfig({ lang })`
- Ingen normalisering av språkkoder eller fallback-kjede (f.eks. `en-US` til `en`). Uregistrerte språk bruker standardmeldingen
