如果我有一些 javascript json 数据,我可以通过用户定义的新类型外部导入
该数据,但使用实际数据的子集吗?例如:
在 JavaScript 中:
exports.foo = {foo: "foo", bar: "bar"}
在纯脚本中:
newtype Foo = Foo {foo :: String}
foreign import foo :: Foo
我知道我们可以使用外部导入数据...
将数据视为引用,但我希望用户可以访问一些类型信息,这似乎是最简单的方法。
最佳答案
如果类型是匿名 JS 对象(而不是“类”对象/从原型(prototype)等构造的),那么您可以完全放弃外部导入,而只需声明一个 type
或 newtype
为记录,因为 PS 和 JS 记录对应 1:1。
至于删除类型中的部分结构,这当然是可能的 - PS 不会关心记录在运行时是否有额外的字段,它只会生成涉及列出的字段的代码(除了记录更新之外)语法,因为它在更新之前浅复制对象 - 但同样,这很好,它将保留额外的键)。
这里唯一潜在的问题是,如果构造了 PS 类型的记录,然后将其传回 JS,那么它将丢失额外的字段。如果记录永远不会返回给 JS,并且/或者丢失的键并不重要,那么一切都很好。
关于javascript - 国外进口新型品种创历史新高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42871642/