只是看一眼 elm 代码,就发现了以下类型定义:
type Cmd msg = Cmd
我似乎无法理解这是如何工作的。谁能解释一下?
最佳答案
这不是递归类型定义,而是将类型 Cmd 定义为具有一个标签 Cmd 的联合类型,该标签不包含任何额外信息。通常,像这样的定义旨在表明该类型表示在 elm 中没有单独意义的值。
在这种情况下,类型是这样定义的,因为 Cmd 上的所有操作都隐藏在平台代码中,因此用户不需要能够检查或解构 Cmd 值。 Cmd 需要公开一个类型变量以保持 Cmd 值的类型安全,因为它们封装了一个 promise 以产生给定类型的消息,并且可以通过 Cmd.map 更改该类型。
关于Elm 递归类型定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39500105/