elm - 你如何初始化类型别名?
问题描述
你如何在 Elm 中初始化类型别名?
型号如下。
type alias Model =
{ name : String
, tags : List Tag
, token : Token
, jwt : String
}
令牌在下面。
type alias Token =
{ accessToken : String
}
我尝试像下面这样初始化。
init : String -> ( Model, Cmd Msg )
init flags =
( Model "" [] "" "", Cmd.none )
但是,会发生错误,例如
The 3rd argument to `Model` is not what I expect:
55| ( Model "" [] "" "", Cmd.none )
^^
This argument is a string of type:
String
But `Model` needs the 3rd argument to be:
Token
我知道第三个参数不是字符串。但是,我只是不知道如何在 init 函数中初始化自定义类型。
有人知道怎么做吗?
解决方案
初始化类型别名有两种选择。第一个,就像在你使用 with 时一样Model
,将别名视为构造函数。要内联执行此操作,您需要将其括在括号中:
Model "" [] (Token "") ""
您也可以采用这种方法,但在单独的行中对其进行初始化:
let
initialToken =
Token ""
in
Model "" [] initialToken ""
如果拥有一个initialToken
一般可用的东西很有用(就像拥有一个init
版本Model
的let
. Token
或者,成为自己的模块并init
暴露自己的模块可能是有意义的。
第二种选择是直接构造类型而不使用别名。在这种情况下,这意味着创建一个包含accessToken
字段的记录:
Model "" [] { accessToken = "" } ""
推荐阅读
- javascript - 如何使用 clsx 有条件地渲染 css?
- angular - 带有嵌套字段的 Angular8 和 formControlName
- xcode - 在 Xcode 下的 OpenCL 源代码中递归包含文件
- r - 我不能有一个真正的背靠背条形图
- python - 如何在 Windows 中使用 Python 对齐新墙纸
- mysql - Mysql关于获取最大最小值和电流的问题
- javascript - 使用 Javascript 在 Wordpress 页面上自动刷新 2 张图片
- c# - 插入数据库时用字符创建序列号
- c++ - 我们如何在 c++ 中使用三角函数时纠正 nan
- rust - 生命周期不会延长,但只有当结构中有一个特征对象时