Ich versuche, Typen für die Mikrobibliothek und ihre main exported function hinzuzufügen. Ich habe eine LIBDEF, wie dies für sie geschaffen:Hinzufügen eines libdef für ein commonjs-Modul Exportieren einer Funktion
Flow typisierte/micro.js
// @flow
import type { Server, IncomingMessage, ServerResponse } from "http"
declare module "micro" {
declare module.exports: {
(): (fn: (req: IncomingMessage, res: ServerResponse) => void) => Server,
}
}
Ich versuche, die Hauptfunktion mit diesem Code-Snippet zu verwenden:
src/index.js
// @flow
const micro = require("micro")
const server = micro((req, res) => {
res.end("Hello world!")
})
server.listen(5000)
In diesem Code-Schnipsel, die Variablen server
, req
und res
werden alle als any
eingegeben, obwohl die micro
-Variable anscheinend einen Typ aus dem libdef aufnimmt. Dies kann in dieser coverage report durch Flow geschaffen gesehen werden. Ich habe verschiedene Möglichkeiten ausprobiert, um die Funktion zu definieren, aber nichts scheint zu funktionieren. Es wurden keine Syntaxfehler gefunden und der libdef scheint gefunden zu werden. Was mache ich falsch?
Es ist auch möglich, dass die Art der Einfuhr nicht funktionieren (ich eigentlich nicht versuchen, Ihre Beispiel). Probieren Sie es aus. –
Es scheint, ich habe zwei Probleme. Die erste ist eine falsche Syntax für aufrufbare Objekte. Dies wird durch Ändern von '()' in '$ call' behoben. Ich möchte den Export als Callable Object behalten, weil micro andere Werte darauf ausgibt. Das zweite Problem ist, dass Typimporte nicht funktionieren. Die 'http'-Modultypen sollten eingebaut sein, um fließen zu können, so dass ich nicht herausfinden kann, warum sie nicht funktionieren. Die Expressbindungen importieren den Typ "Server" so. – Hilzu
Leider kenne ich die Antwort auf deine andere Frage nicht. Es kann sich lohnen, es als separate Frage zu veröffentlichen. –