在 purescript-dom 中,你如何从一个 Node 转到一个特定的元素类型?

In purescript-dom how do you go from a Node to a specific element type?

我想我可能缺少 purescript-dom 模块中的一个关键函数,用于将 Node 转换为特定的元素类型。例如,如果我有一个 Event,我可以使用 DOM.Events.Events.target 来获取节点,但似乎获取特定元素的唯一方法是使用 unsafeCoerce,例如

import DOM.Event.Event (target)
import DOM.HTML.HTMLInputElement (value)

eval (InputChange event next) = do
  -- Get the value of the HTMLInputElement assuming it is one
  v <- H.liftEff $ value (unsafeCoerce $ target event)
  H.liftEff $ log "Input field change"
  H.liftEff $ log v
  pure next

从节点到元素类型有没有更好的方法?

想法是使用 toForeign,然后当你想向上转换 Node / 元素类型时使用 readHTMLInputElement

虽然不断地写这样的东西很烦人,所以 purescript-dom-classy 旨在减轻它的一些痛苦。除了避免 toForeign 这一步,你将只有一个 Maybe 要处理,而不是 Except 一个 read 函数将 return.