Elm-inspired FRP for TypeScript and JavaScript