Pokusím napsat závazné pro zásuvky.io.
Mám potíže s funkce (next()
v mém příkladu kódu v dolní části), který buď bere žádný argument nebo chyba objekt (Js.Exn.raiseError("ERROR!")
).
Nemůžu najít způsob, jak funkci definovat podpis, který může mít oba typy argument jako první hodnota.
Nejsem si ani jistý, jestli to, co žádám, je možné v edikt, pomoci vyřešit tento problém v řádné edikt způsob, chtěl bych být ocenil.
Moje současná implementace vypadá takto:
type server
type socket
type next = (. unit) => unit
@new @module("socket.io") external socketIO: unit => server = "Server"
@send external use: (server, (socket, next) => unit) => unit = "use"
@send external listen: (server, int) => unit = "listen"
@send external on: (server, @string [ #connection(socket => unit) ] ) => unit = "on"
let io = socketIO()
io->use((socket, next) => {
Js.log("FIRST")
next(.)
})
io->use((socket, next) => {
Js.log("SECOND")
next(.)
})
io->on(#connection(socket =>
Js.log("CONNECT")
))
io->listen(3000)