ClojureScript 将使用 JavaScript 唯一的数字类型 Number 来表示如 {:person/weight 200.0} 这样的数值。当这样的记录用 transit 序列化时,transit 会看到 Number: 200 并将其打包为一个整数,然后例如 JVM 这样的其他平台会将它解包为一个整数,而不是浮点数。而现在,如果 Datomic 这样的系统在没有预处理并根据一个表明 :person/weight 实际上是 :db.type/float 的模式进行处理的情况下接收到意外的类型,就可能会崩溃。
这是 transit 的设计缺陷吗?transit 应该改变以允许我指定类型或集成一个模式提供者(spec),以选择正确的类型吗?