我在我的Elm项目中创建了一个表模块。
每列都有一个getter函数,用于定义如何从为行建模的记录中检索数据。
所以一行可能看起来像:
{ name = "bananas"
, price = 5
}
列可能如下所示:
[ { title = "Item Name"
, get = .name
}
, { title = "Price in pennies"
, get = .price >> (*) 100 >> toString
}
]
这意味着列get
函数的类型注释是:
Row -> String
我遇到的问题是我想让这个表模块成为其他项目的可重用组件,这些项目有自己的" Row"类型。如何允许模块的使用者指定行类型别名而不删除所有类型注释?
我对榆树很新,很抱歉,如果我的问题中的措辞不对。
答案 0 :(得分:4)
您可以引入类型变量Row
,而不是使用您自己的类型a
,但任何小写名称都可以使用,例如elm-sortable-table data
})
然后你可以创建这样的东西:
type alias Column a =
{ get : a -> String
, title : String
}
type alias Columns a =
List (Column a)
viewTable : Columns a -> List a -> Html msg