---
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` | `Error` के दूसरे तर्क के साथ संगत विकल्प (`{ cause }` आदि)। |

### समाधान क्रम [#resolution-order]

1. `getGlobalConfig()` का `lang` प्राप्त करता है (सेट न होने पर `"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 };
```

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

`setErrorMessage` के पहले तर्क का प्रकार है।

## पूरक [#notes]

- `lang` का डिफ़ॉल्ट `"en"` है। `setGlobalConfig({ lang })` से स्पष्ट रूप से बदलें
- भाषा कोड का सामान्यीकरण या फ़ॉलबैक श्रृंखला (उदा. `en-US` → `en`) नहीं है। अपंजीकृत भाषाएँ डिफ़ॉल्ट संदेश बनती हैं
