只是看看榆树代码并遇到以下类型定义:
type Cmd msg = Cmd
我似乎无法理解这是如何工作的。有人可以解释一下吗?
答案 0 :(得分:10)
这不是递归类型定义,它将类型Cmd定义为具有一个标签Cmd的联合类型,该标签不包含额外信息。通常这样的定义用于表示该类型表示在榆树中没有个别含义的值。
在这种情况下,类型的定义是因为Cmd上的所有操作都隐藏在平台代码中,因此用户无需检查或解构Cmd值。 Cmd需要公开一个类型变量以保持Cmd值的类型安全性,因为它们封装了一个promise以产生给定类型的消息,并且该类型可以通过Cmd.map进行更改。