榆树递归类型定义

5 elm

只是看看榆树代码并遇到以下类型定义:

type Cmd msg = Cmd
Run Code Online (Sandbox Code Playgroud)

我似乎无法理解这是如何工作的.有人可以解释一下吗?

Art*_*kes 10

这不是递归类型定义,它将类型Cmd定义为具有一个标签Cmd的联合类型,该标签不包含额外信息.通常这样的定义旨在表示该类型表示在榆树中没有个别含义的值.

在这种情况下,类型的定义是因为Cmd上的所有操作都隐藏在平台代码中,因此用户无需检查或解构Cmd值.Cmd需要公开一个类型变量以保持Cmd值的类型安全性,因为它们封装了一个promise以产生给定类型的消息,并且该类型可以通过Cmd.map进行更改.