Tham chiếu API
Đặc tả của I18nErrorBase, setErrorMessage và các type liên quan.
I18nErrorBase
Lớp cơ sở để kế thừa Error. message giải quyết theo lang.
import { I18nErrorBase } from "i18n-error-base";
class MyError extends I18nErrorBase<{ code: string }> {}
Tham số type
| Prop | Type | Default | Description |
|---|---|---|---|
TMeta |
ErrorMeta | undefined |
ErrorMeta | undefined |
Kiểu của meta. Nếu không dùng, chỉ định undefined. |
Thuộc tính static
| Prop | Type | Default | Description |
|---|---|---|---|
prefix? |
string |
undefined |
Nối vào đầu thông báo đã giải quyết. |
Thuộc tính instance
| Prop | Type | Description |
|---|---|---|
meta |
TMeta |
Thông tin bổ trợ từ constructor. Đọc/ghi được. |
message |
string |
Giải quyết theo lang hiện tại. Liệt kê được. |
cause |
unknown |
Nguyên nhân qua ErrorOptions. Thuộc tính chuẩn của Error. |
Constructor
Nếu TMeta không bao gồm undefined, meta là bắt buộc.
new MyError(meta, message, options?)
Nếu TMeta là undefined, bạn có thể bỏ qua meta.
new MyError(message, options?)
new MyError(meta, message, options?)
| Tham số | Kiểu | Mô tả |
|---|---|---|
meta |
TMeta |
Thông tin bổ trợ để tạo thông báo. |
message |
string | MessageFactory<TMeta> |
Thông báo mặc định cho ngôn ngữ chưa đăng ký. Hàm nhận meta. |
options |
ErrorOptions |
Option tương thích với tham số thứ 2 của Error ({ cause } v.v.). |
Thứ tự giải quyết
- Lấy
langcủagetGlobalConfig()(khi chưa thiết lập là"en") - Chạy hàm đã đăng ký cho class và ngôn ngữ đó kèm
meta - Nếu chưa đăng ký, dùng thông báo mặc định
- Nếu có
static prefix, nối vào đầu
setErrorMessage
Đăng ký hàm tạo thông báo theo từng ngôn ngữ.
import { setErrorMessage } from "i18n-error-base";
setErrorMessage(MyError, (meta) => `...: ${meta.code}`, "ja");
| Tham số | Kiểu | Mô tả |
|---|---|---|
reference |
I18nErrorBaseConstructor |
Class kế thừa I18nErrorBase. Ngược lại lỗi type. |
message |
string | (meta) => string |
Thông báo đăng ký. Kiểu meta suy ra từ class đích. |
lang |
string | Iterable<string> |
Ngôn ngữ đích. Một mã đơn hoặc iterable (như mảng). |
Đăng ký lại cùng class và ngôn ngữ sẽ ghi đè.
Type
ErrorMeta
type ErrorMeta = {
readonly [prop: string]: unknown;
};
Ràng buộc mặc định của TMeta. Đối tượng chỉ đọc có thuộc tính tùy ý.
ErrorOptions
type ErrorOptions =
ConstructorParameters<typeof Error> extends [
message?: unknown,
options?: (infer TOptions) | undefined,
]
? TOptions
: { readonly cause?: unknown };
Type suy ra từ tham số thứ 2 của Error. Có thể truyền cause.
MessageFactory<TMeta>
interface MessageFactory<TMeta extends ErrorMeta | undefined = ErrorMeta | undefined> {
(meta: TMeta): string;
}
Hàm tạo thông báo từ meta. Dùng cho cả mặc định và đã đăng ký.
I18nErrorBaseParams<TMeta>
Overload tham số constructor.
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];
Chỉ khi TMeta là undefined mới được bỏ meta.
I18nErrorBaseConstructor
interface I18nErrorBaseConstructor {
new (...args: any): I18nErrorBase;
}
Type của tham số thứ nhất của setErrorMessage.
Ghi chú bổ sung
- Mặc định
langlà"en". Hãy chuyển rõ ràng bằngsetGlobalConfig({ lang }) - Không chuẩn hóa mã ngôn ngữ hay chuỗi fallback (ví dụ
en-US→en). Ngôn ngữ chưa đăng ký thành thông báo mặc định