如何在elm中的其他地方使用记录的字段类型

ore*_*dan 2 types typescript elm

考虑一下:

type alias Foo = 
    { id : String
    , name : String
    }

type alias Bar = 
    { id : Foo.id
    , name : String
    }
Run Code Online (Sandbox Code Playgroud)

据我所知,这在 elm 中不起作用。(我的意思是使用“Foo.id”)。

我可以将 Bar 中的 id 字段设置为 String,但我希望它使用另一条记录的 id 类型。这样,当/如果我稍后需要重构它时,我只能在一处进行。这是我尝试执行此操作时看到的错误消息 *

该类型需要 0 个参数,但得到了 1 个参数

额外的上下文:我对 Elm 语言和函数式编程总体来说还很陌生。我有相当多的 Typescript 经验。所以我习惯于创建定义明确的类型。不确定 Elm 中是否是这样做的。所以我来这里是为了学习和发现。

Igo*_*dov 7

如果您倾向于对id字段的类型进行重复数据删除,您可以考虑将其提取为自己的类型:

type alias Id = String

type alias Foo = 
    { id : Id
    , name : String
    }

type alias Bar = 
    { id : Id
    , name : String
    }
Run Code Online (Sandbox Code Playgroud)

  • 您必须澄清“样板文件”的含义,因为它在这种情况下并不明显。也许提供一个您尝试从另一种语言移植到 Elm 的模式示例,有人可能会给您等效的 Elm。 (2认同)
  • @ore​​ychandan 如果我的回答听起来居高临下,我深表歉意。这不是我的本意。这不是我第一次被告知这件事。我不知道为什么我听起来像这样。无论如何……抱歉。 (2认同)