A 类 类型脚本 该代码生成器 常规 二进制格式
二进制应用程序记录编码 (单位:千美元)常规)是一个基于二进制的策略 格式,有利于紧凑和可容性. @ bare- ts/ 工具 提供生成的编译器 字体 财务报告和审定财务报表 Java 脚本 代码从 a 常规 计划.
警告: 常规 规格目前是 电子论坛 草案. 规格现在相当稳定. 然而,在最后释放之前,它可能仍在演变.
开始
首先,安装 @ bare- ts/ 工具 财务报告和审定财务报表 @bare-ts/lib (英语)数字 :
npm install --save-dev @bare-ts/tools
npm install @bare-ts/lib
-
@ bare- ts/ 工具 能够从一个计划生成解码器和编码器
-
@bare-ts/lib (英语) 提供基本的解码器和编码器
也可以下载捆绑和可执行版本 @ bare- ts/ 工具 名称 bare 本节 资产 总数 打开 GitHub 图像。 。 。 .
然后,写一个计划:
type Gender enum {
FEMALE
FLUID
MALE
}
type Person struct {
name: str
email: str
gender: optional<Gender>
}
type Organization struct {
name: str
email: str
}
type Contact union { Person | Organization }
type Contacts list<Contact>
将您的计划编入代码 :
bare schema.bare --out=code.ts
一旦生成代码, 编码和解码消息 :
import { Gender, decodeContacts, encodeContacts } from "./code.js"
import { strict } from "node:assert"
const contacts = [
{
tag: "Person",
val: {
name: "Seldon",
email: "[email protected]",
gender: Gender.Male,
},
},
]
const payload = encodeContacts(contacts)
const contacts2 = decodeContacts(payload)
strict.deepEqual(contacts, contacts2)
参考我们 types 文档页面 查找 BARE 类型和 TypeScript 类型之间的对应关系,以及一些 CLI 选项对此的影响.
为什么是BARE?
压缩消息: 相对 贝森, (中文(简体) ), 边境保护局,以及 邮件包, (中文(简体) ), 常规 信件不嵌入计划信息.
可能时可进行生物编码: BARE值大多具有单一的二进制表示. 这使得消息分解等使用案例的支持更容易.
关注现代平台:信息是octet-accessed并使用小endian代表.
简单: 相对 协议缓冲 财务报告和审定财务报表 平缓, (中文(简体) ), 常规 并不限制它的二进制格式,以支持计划进化. 协议缓冲 在每个消息中嵌入元数据,使每个字段都具有可选性. 常规 建议使用被标记的结合作为消息类型支持后向兼容性.
为什么光着身子?
实用错误报告数字 : 光线 区分可收回错误和API误用.
解码器可能发出可恢复的错误(BareError),并提供足够的信息来理解信息为何不正确.
API 误用释放出 AssertionError。 。 。 .
AssertionError 只在 development 出口条件 设置或何时 NODE_ENV 环境变量设定为 development。 。 。 .
此外, 光线 假设使用 TypeScript 可以减少 API 误用次数来检查.
优化捆绑大小数字 : 光线 采用功能和程序编程风格. 这有利于利用现代技术 消除已死密码 技术,例如 树摇。 。 。 . 使用捆绑器,例如 环境建设, (中文(简体) ), 滚动,或 网络软件包,您的捆绑只包含实际使用的函数.
生成高效代码 光线 注意生成现代JavaScript引擎可能优化的代码.