javascript - 国外进口新型品种创历史新高

标签 javascript ffi purescript newtype

如果我有一些 javascript json 数据,我可以通过用户定义的新类型外部导入该数据,但使用实际数据的子集吗?例如:

在 JavaScript 中:

exports.foo = {foo: "foo", bar: "bar"}

在纯脚本中:

newtype Foo = Foo {foo :: String}
foreign import foo :: Foo

我知道我们可以使用外部导入数据...将数据视为引用,但我希望用户可以访问一些类型信息,这似乎是最简单的方法。

最佳答案

如果类型是匿名 JS 对象(而不是“类”对象/从原型(prototype)等构造的),那么您可以完全放弃外部导入,而只需声明一个 typenewtype 为记录,因为 PS 和 JS 记录对应 1:1。

至于删除类型中的部分结构,这当然是可能的 - PS 不会关心记录在运行时是否有额外的字段,它只会生成涉及列出的字段的代码(除了记录更新之外)语法,因为它在更新之前浅复制对象 - 但同样,这很好,它将保留额外的键)。

这里唯一潜在的问题是,如果构造了 PS 类型的记录,然后将其传回 JS,那么它将丢失额外的字段。如果记录永远不会返回给 JS,并且/或者丢失的键并不重要,那么一切都很好。

关于javascript - 国外进口新型品种创历史新高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42871642/

相关文章:

javascript - 为什么在beforeCreated/created/beforeMount中更改数据无法触发VUE中的watch?

bower - Electron + Purescript + 铝热剂

purescript - 如何将 purescript-halogen 组件渲染到 <head> 标签中

PureScript 无法将 Maybe Int 类型与 Int 类型匹配

javascript - 浏览器中的 Python 和 React/Redux? (原为 : Transcrypt and React/Redux)

javascript - 将现有的 Kendo 网格绑定(bind)到新的 JSON 对象

javascript - 有没有开源库可以在浏览器中使用 Javascript 来整理 Javascript?

opengl - 在绘制到屏幕之前,opengl 纹理中的意外像素发生变化

common-lisp - 普通 Lisp : Cffi: Setf'ing a Foreign Type

haskell - 尽管没有显示错误,GHC 不会生成二进制文件