Skip to main content
On this page

Типизация

Для удобной работы с encodexx предусмотрены некоторые вспомогательные типы. Они помогают извлекать и преобразовывать типы схем и объектов для сериализации. Это может быть полезно как при написании пользовательских типов, так и при обычной работе с сериализатором.

  • ExtractObj - Помогает извлечь тип объекта, который сериализует схема.
import { Serializer, t, ExtractObj } from "encodexx"
const serializer = new Serializer({
name: t.or(t.int8, t.string, t.date),
role: t.enumerate("user", "admin", "guest"),
})
type TSchemaType = ExtractObj<typeof serializer>
TSchemaType // { name: number | string | Date, role: "user" | "admin" | "guest" }
const obj: TSchemaType = {
name: 12,
role: "admin"
}
serializer.encode(obj)
  • ArraySingle - При создании схем в отдельных переменных может возникать ошибка связанная с неопределенным числом элементов в схемах. Чтобы её решить можно воспользоваться типом ArraySingle
import { ArraySingle, t, Serializer } from "encodexx"
const schema = { arr: [t.int8] }
new Serializer(schema as ArraySingle<typeof schema>)
  • TYPE_SYMBOL- Символ, который присутствует во всех типах в объекте t или созданных с помощью customType().
import { t, TSchema, TYPE_SYMBOL } from "encodexx";
export function orNone<T extends TSchema>(type: T) {
if (TYPE_SYMBOL in type) return t.or(t.none, type);
return t.or(t.none, t.schema(type));
}
  • TSchema - Тип схемы. Может состоять как из единственного типа, так и быть сложной структурой.

  • TConvertValueToType - Помогает переводить тип схемы в тип объекта, который этой схемой обрабатывается.

import { t, TConvertValueToType } from "encodexx";
const schema = {
name: t.str,
enums: t.enumerate("A", "B", "C"),
};
type TValue = TConvertValueToType<typeof schema>;
TValue // { name: string, enums: "A" | "B" | "C" }