Я пытаюсь достичь наследования типов.Под этим я подразумеваю, что хочу иметь функции, возвращающие «подтипы», а затем функцию, возвращающую «супертип».Позвольте мне привести пример
Допустим, у меня есть основной компонент View, который возвращает Html Msg
view: Model -> Html Msg
view model =
div [class "goal-box"] [
function_a model,
function_b model
]
Теперь я бы хотел, чтобы каждый из function_a
и function_b
могвернуть подтип Msg
function_a: Model -> Html AMsg
function_b: Model -> Html BMsg
Причина, по которой я этого хочу, заключается в том, что я хочу убедиться, что функция function_a ограничена в каком видеMsg он может производить, и то же самое относится и к function_b, но в конце концов мне нужно унифицированное представление, которое использует оба.
Так что естественно было определить Msg как
type Msg
= AMsg
| BMsg
type AMsg
= AnotherMsg Int
| AgainMsg Int
type BMsg
= ThisMsg String
| ThatMsg Int
Это непохоже, работает, так как компилятор говорит мне, что он ожидал возвращаемого значения типа Html Msg
, а не Html AMsg
.
Надеюсь, это понятно.Я чувствую, что шрифты - это та концепция, с которой я больше всего борюсь с JS, но, надеюсь, я иду в правильном направлении.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ
Я спросиланалогичный вопрос ранее в тот же день, но я понял, что допустил ошибку, а затем несколько раз запутался, редактируя ее.Поэтому мне пришлось удалить его.Заранее извиняюсь перед людьми, которые нашли время, чтобы прочитать его и ответить.