Snažím sa napísať záväzné pre zásuvky.io.
Mám problém s funkciou (next()
v mojom príklade kódu v spodnej časti), ktoré buď nie je nijako argument alebo chyba objekt (Js.Exn.raiseError("ERROR!")
).
Nemôžem nájsť spôsob, ako definovať funkciu, podpis, ktorý môže mať obidva druhy argument ako prvú hodnotu.
Nie som si ani istý, či to, čo sa pýtam, je to možné v rescript, všetky pomôcť vyriešiť tento problém v správnom rescript spôsobom, chcel by som byť ocenil.
Moja súčasná implementácia vyzerá 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)