Базовый пример
Базовый пример сериализации данных
Создадим сериализатор, который будет преобразовывать объекты в бинарные данные и обратно. Для примера возьмем гипотетический объект пользователя:
import { Serializer, ExtractObj, t } from "encodexx";
const userSerializer = new Serializer({ name: t.str, id: t.uint32, role: t.enumerate("admin", "user", "guest"), info: t.optional({ age: t.uint8, createdAt: t.date, }), friends: [ t.or( t.schema({ type: t.enumerate("admin"), name: t.str, link: t.str }, "type"), t.schema({ type: t.enumerate("user"), id: t.uint32 }, "type") ), ],});
Tip
Вы можете не передавать второй аргумент в t.schema()
, тогда encodexx
самостоятельно определит сравнит объекты. Подробнее
Сериализуем объект пользователя:
// Получаем тип объекта, который сериализует схемаtype TUser = ExtractObj<typeof userSerializer>;
const user: TUser = { name: "John", role: "admin", id: 2, friends: [ { type: "admin", name: "Alice", link: "https://example.com" }, { type: "user", id: 1 }, ],};
const encoded = userSerializer.encode(user);
console.log(encoded.buffer);
Декодируем бинарные данные:
const decoded = userSerializer.decode(encoded);
console.log(decoded);