J'essaie d'ajouter des types pour la micro-bibliothèque et ses main exported function. J'ai créé un BIBDEF comme celui-ci pour lui:Ajout d'une libdef pour un module commonjs exportant une fonction
flux typé/micro.js
// @flow
import type { Server, IncomingMessage, ServerResponse } from "http"
declare module "micro" {
declare module.exports: {
(): (fn: (req: IncomingMessage, res: ServerResponse) => void) => Server,
}
}
Je suis en train d'utiliser la fonction principale avec ce bout de code:
src/index.js
// @flow
const micro = require("micro")
const server = micro((req, res) => {
res.end("Hello world!")
})
server.listen(5000)
Dans ce code snippet les variables server
, req
et res
sont tous typés any
même si la variable micro
semble prendre un certain type de la libdef. Cela peut être vu dans ce coverage report créé par flux. J'ai essayé plusieurs façons de définir la fonction, mais rien ne semble fonctionner. Aucune erreur de syntaxe n'est trouvée et la libdef semble être trouvée. Qu'est-ce que je fais mal?
Il est également possible que les importations de type ne fonctionnent pas (je ne l'ai pas vraiment essayer votre Exemple). Essayez ceci cependant. –
Il semble que j'ai deux problèmes. La première est une syntaxe incorrecte pour les objets appelables. C'est corrigé en changeant '()' en $ call. Je veux garder l'exportation comme un objet appelable parce que le micro exporte d'autres valeurs dessus. Le deuxième problème est que les importations de type ne fonctionnent pas. Les types de modules 'http' devraient être intégrés pour que je ne puisse pas comprendre pourquoi ils ne fonctionnent pas. Les liaisons express importent le type 'Server' comme ça. – Hilzu
Malheureusement, je ne connais pas la réponse à votre autre question. Cela peut valoir la peine de l'afficher comme une question distincte. –