MetaMessage已支持TypeScript

简介: MetaMessage是AI时代的新型序列化协议,兼具二进制紧凑性与文本可读性,支持跨语言语义一致。现全面支持TypeScript装饰器,通过`@mm`注解声明类型与描述,兼容JSONC,轻松实现类型安全、AI友好的数据交换。(239字)

截屏2026-05-15 18.54.06.png

MetaMessage已支持TypeScript

MetaMessage作為AI時代的全新協議,既實現了二進制緊湊編碼,同時保留了文本可讀性,是替代json、protobuf、messagepack等序列化工具的完美選擇。

MetaMessage的架構保證了跨語言的語意一致性,理論上實現了真正的跨語言。json、messagepack各語言間實現不一致,類型不一致,數據範圍也不一致。protobuf外置schema,交換困難、更新困難,靈活度不足。而MetaMessage完全解決了以上問題。

最新的TypeScript已經支持了裝飾器且默認開啟,方便我們更好地使用MetaMessage。

使用起來非常簡單:

安裝

npm i metamessage@latest

使用

import {
    encodeFromValue, decodeToValue, mm, ValueType } from 'metamessage';

@mm({
    desc: '用户' })
class User {
   
  @mm({
    type: ValueType.Int64, desc: '用户ID', nullable: false })
  id: bigint = 0n;
  @mm({
    desc: '昵称' })
  name: string = '';
  @mm({
    type: ValueType.Uint8 })
  age: number = 0;
}

const u = new User();
u.id = 666n;
u.name = 'abc';
u.age = 20;

const wire = encodeFromValue(u);
console.log('wire', wire);

const decoded = decodeToValue(wire, User);
console.log('decoded:', decoded);

簡單解釋下,在類和字段上可以增加一個註解,附帶額外信息,比如一個數字類型默認是int,為了表達int64就可以type: ValueType.Int64。如果是string/bool等可以根據字面量推斷出來的,就可以省略。這樣,數據就可以攜帶類型了。

推薦增加描述desc: '用户ID',可以讓調用者輕鬆知道這個字段的意義,特別是方便AI理解,又省了文檔。

除了從語言的數據對象獲取數據,也可以直接使用文本格式,目前支持了jsonc

import {
    encodeFromJSONC, decodeToJSONC } from 'metamessage';

const jsonc = `
        // mm: desc="用户"
        {

                // mm: type=i64; desc="用户ID"
                "id": 666,

                // mm: desc="昵称"
                "name": "abc",

                // mm: type=u8
                "age": 20,
        }
`
const wire = encodeFromJSONC(jsonc);
const jsoncString = decodeToJSONC(wire);
console.log('JSONC:', jsoncString);
目录
相关文章
|
28天前
|
人工智能 机器人 测试技术
用 Bub 和飞书搭一个更懂群聊上下文的小机器人
手把手教你搭建 Bub:一个懂群聊上下文、无“班味”的轻量化 AI 助理。
263 1
用 Bub 和飞书搭一个更懂群聊上下文的小机器人
|
25天前
|
JSON JavaScript 前端开发
在TypeScript和JavaScript如何使用MetaMessage?
MetaMessage 是一种跨语言数据交换协议,支持 TypeScript/JavaScript(通过装饰器自动类型转换)、JSONC 文本与紧凑二进制 wire 格式,兼顾可读性、精度(如 bigint 表示 int64)与性能,旨在替代 JSON、Protobuf 等传统序列化方案。
217 125
|
5月前
|
存储 缓存 弹性计算
2026年阿里云 c7 实例(ecs.c7.2xlarge)配置与性能测评
阿里云c7实例(ecs.c7.2xlarge)的8核16G配置,搭配1M - 5M可选带宽和40GB ESSD云盘,是专门为企业级计算密集型场景设计的高性能云服务器选择。该实例依托第三代神龙云服务器架构,搭载了Intel Xeon可扩展处理器,核心亮点在于算力强劲、运行稳定,还具备企业级安全保障,对于高并发交易、批量计算这类对CPU性能要求苛刻的业务,适配性极高。下面从价格、性能、适用场景和选购要点四个方面,为大家通俗解读。
394 10
|
11月前
|
机器学习/深度学习 人工智能 数据挖掘
基于YOLOv8的狗狗品种(多达60种常见犬类)品种鉴别识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
随着宠物经济的不断发展,狗狗已经成为众多家庭的重要成员。不同品种犬类在性格、饲养方式、健康管理上有显著差异,快速准确地识别狗狗品种有着重要应用价值。传统方式依赖人工识别,效率低且易出错。 本项目借助YOLOv8强大的目标检测能力,结合高质量数据集训练,实现60种犬类的高精度自动分类识别,并提供可交互图形界面,极大降低使用门槛。
基于YOLOv8的狗狗品种(多达60种常见犬类)品种鉴别识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
|
消息中间件 存储 Kafka
分布式消息中间件设计与实现
本文深入探讨了消息中间件的核心功能实现与高并发、高可用设计。在生产者设计中,涵盖消息构造、序列化、路由策略及可靠性保障(如ACK机制)。消费者部分分析了拉取/推送模式、分区分配与消息确认机制。同时,Broker作为核心组件,负责消息路由、存储和投递,并通过索引技术实现快速检索。 高并发设计方面,重点讨论了文件存储(顺序写入、分段存储)、日志结构存储及负载均衡策略(如哈希分区、轮询分区)。为确保高可用性,文章详细解析了主从复制、故障转移机制以及同城/异地多活容灾方案。
472 13
|
存储 缓存 编解码
|
前端开发 测试技术 API
DeepSeek-V3小版本升级,非推理模型王者归来
今天,DeepSeek低调地在魔搭社区开源 DeepSeek-V3-0324 模型,虽然官方低调称之为小版本升级,但能力提升一点也不小。
582 5
|
前端开发 PHP
ThinkPHP6,视图的安装及模板渲染和变量赋值 view::fetch() ,view::assgin() ,助手函数
本文介绍了ThinkPHP6中视图的安装和使用,包括通过`composer`安装`topthink/think-view`,使用`view::fetch()`进行模板渲染和变量赋值,以及使用`view::assign()`进行全局模板变量赋值。还提到了助手函数作为`view::fetch()`和`view::assign()`的封装组合,但效率较低。
ThinkPHP6,视图的安装及模板渲染和变量赋值 view::fetch() ,view::assgin() ,助手函数
|
算法 调度 UED
深入理解操作系统的调度算法
【9月更文挑战第22天】本文通过深入浅出的方式,介绍了操作系统中的核心概念——调度算法。文章首先解释了调度算法的基本定义和重要性,然后详细分析了先来先服务(FCFS)、短作业优先(SJF)以及时间片轮转(RR)三种常见的调度算法。每种算法都配有简单的代码示例,帮助读者更好地理解其工作原理。最后,文章探讨了这些调度算法在现代操作系统中的应用及其优缺点,旨在为读者提供对操作系统调度机制的全面认识。
HTML URL可以有多少种写法
URL有多种类型,包括绝对URL,其包含完整路径;相对URL,则基于当前文档位置。此外有协议相对URL,不指定协议;锚点URL用于定位页面内特定位置;邮政URL用于创建邮件链接;电话URL用于拨打电话;文件URL指向本地文件;数据URL则直接在HTML中嵌入小文件,如图片。