ClojureScript 使用 JavaScript 的唯一数值类型 Number 来表示诸如 {:person/weight 200.0} 这样的数值。当这样的记录被 transit 序列化时,transit 会将 Number: 200 视为一个整数,并将其打包,然后其他平台,如 JVM,会将其解包为一个整数,而不是一个浮点数。除非我预先根据声明 :person/weight 事实上是 :db.type/float 的模式对值进行预处理,否则像 Datomic 这样 Memories 系统将在意外的类型上崩溃。
这是 transit 中的设计问题吗?transit 是否应该更改以允许我指定类型或与模式提供者(spec)集成来选择正确的类型?