Да, есть!Вы можете переместить общие поля в отдельную запись и добавить в нее переменную строки.Переменная строки a
, которая задает оставшиеся поля, затем может быть предоставлена позже:
type alias CommonModel a =
{ a
| contents : List Nav
, wrapperId : String
}
type alias InputModel =
CommonModel
{ containerClassName : Maybe String }
type alias Model =
CommonModel
{ containerClassName : String }
Вы также можете использовать переменные строки для написания функций, которые принимают любую запись, если она имеет общие поля,Например,
getWrappedId : CommonModel a -> String
getWrapperId { wrapperId } = wrappedId
будет принимать как InputModel
и Model
, так и любую другую запись, которая содержит хотя бы поля, указанные в CommonModel
.Переменная строки будет выведена, как и любая другая переменная типа.