---
title: API Referansı
description: I18nErrorBase, setErrorMessage ve ilgili türlerin belirtimi.
---

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

`Error` genişletmek için temel sınıftır. `message`, `lang` değerine göre çözülür.

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

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

### Tür parametreleri [#type-params]

| Prop | Type | Default | Description |
| ---- | ---- | ------- | ----------- |
| `TMeta` | `ErrorMeta \| undefined` | `ErrorMeta \| undefined` | `meta` türü. Kullanılmıyorsa `undefined` belirtin. |

### Statik özellikler [#static-props]

| Prop | Type | Default | Description |
| ---- | ---- | ------- | ----------- |
| `prefix?` | `string` | `undefined` | Çözümlenmiş mesajın başına eklenir. |

### Örnek özellikleri [#instance-props]

| Prop | Type | Description |
| ---- | ---- | ----------- |
| `meta` | `TMeta` | Oluşturucudan ek bilgi. Okunabilir ve yazılabilir. |
| `message` | `string` | Geçerli `lang` değerine göre çözülür. Numaralandırılabilir. |
| `cause` | `unknown` | `ErrorOptions` ile geçirilen neden. `Error` standart özelliğidir. |

### Oluşturucu [#constructor]

`TMeta` değeri `undefined` içermiyorsa, `meta` zorunludur.

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

`TMeta` değeri `undefined` ise, `meta` atlanabilir.

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

| Parametre | Tür | Açıklama |
| --------- | --- | -------- |
| `meta` | `TMeta` | Mesaj üretiminde kullanılan ek bilgi. |
| `message` | `string \| MessageFactory<TMeta>` | Kayıtsız diller için varsayılan mesaj. İşlev ise `meta` alır. |
| `options` | `ErrorOptions` | `Error` 2. bağımsız değişkeniyle uyumlu seçenekler (`{ cause }` gibi). |

### Çözümleme sırası [#resolution-order]

1. `getGlobalConfig()` işlevinden `lang` alınır (ayarlanmamışsa `"en"`)
2. O sınıf ve dile kayıtlı işlev `meta` ile çalıştırılır
3. Kayıt yoksa varsayılan mesaj kullanılır
4. `static prefix` varsa başa eklenir

:::note
Kayıt sınıf bazındadır. Üst kaydı alta aktarılmaz. Her sınıf için kaydedin.
:::

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

Dile özgü mesaj üretim işlevini kaydeder.

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

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

| Parametre | Tür | Açıklama |
| --------- | --- | -------- |
| `reference` | `I18nErrorBaseConstructor` | `I18nErrorBase` türevi sınıf. Değilse tür hatası. |
| `message` | `string \| (meta) => string` | Kaydedilecek mesaj. `meta` türü hedef sınıftan çıkarılır. |
| `lang` | `string \| Iterable<string>` | Hedef dil. Tek kod veya yinelenebilir nesne (dizi gibi). |

Aynı sınıf ve dile yeniden kayıt üzerine yazar.

## Türler [#types]

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

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

`TMeta` varsayılan kısıtıdır. Rastgele özellikli salt okunur nesne.

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

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

`Error` 2. bağımsız değişkeninden türetilmiş türdür. `cause` geçirilebilir.

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

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

`meta` değerinden mesaj üreten işlevdir. Varsayılan ve kayıtlı için kullanılır.

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

Oluşturucu bağımsız değişkeni aşırı yüklemeleri.

```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` içermeyen biçim yalnızca `TMeta` `undefined` olduğunda izin verilir.

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

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

`setErrorMessage` 1. bağımsız değişkeninin türüdür.

## Notlar [#notes]

- `lang` varsayılan değeri `"en"` olur. `setGlobalConfig({ lang })` ile açıkça değiştirin
- Dil kodu normalleştirme veya geri dönüş zinciri (ör: `en-US` → `en`) yoktur. Kayıtsız diller varsayılan mesaj olur
