2017-04-25 1 views
0

マイクロライブラリとそのタイプのmain exported functionを追加しようとしています。私はそれのために、このようなLIBDEFを作成しました:関数をエクスポートするcommonjsモジュールのlibdefを追加する

フロー型指定された/ micro.js

// @flow 
import type { Server, IncomingMessage, ServerResponse } from "http" 

declare module "micro" { 
    declare module.exports: { 
    (): (fn: (req: IncomingMessage, res: ServerResponse) => void) => Server, 
    } 
} 

を、私はこのコードのスニペットと主な機能を使用しようとしている:

そのコードではsrc/index.js

// @flow 
const micro = require("micro") 

const server = micro((req, res) => { 
    res.end("Hello world!") 
}) 

server.listen(5000) 

は、変数server、をスニペットとresは、micro変数がlibdefから何らかのタイプを受け取っているように見えますが、すべてanyとタイプされています。これはフローによって作成されたcoverage reportに見ることができます。私は関数を定義するいくつかの異なる方法を試しましたが、何も動作していないようです。構文エラーはなく、libdefが見つかったようです。私は間違って何をしていますか?

答えて

0

要するにflow-typed definitions for lru-cache

からこの例をチェックアウト、これはあなたが欲しいものを行う必要があります。

declare module 'micro' { 
    declare var exports: (fn: (req: IncomingMessage, res: ServerResponse) => void) => Server; 
} 
+0

それは(私は実際にあなたの試していなかったタイプの輸入が働いていないことも可能です例)。しかし、これを試してみてください。 –

+0

私は2つの問題があるようです。最初のものは、呼び出し可能なオブジェクトの構文が間違っています。それは '()'を '$ call'に変更することで修正されました。私はそれが他の値をエクスポートするので、呼び出し可能オブジェクトとしてエクスポートを保持したい。第2の問題は、型のインポートが機能しないということです。 'http'モジュール型は、なぜ動作しないのか分からないように組み込むべきです。エクスプレスバインディングは、そのような 'Server'型をインポートします。 – Hilzu

+0

残念ながら私はあなたの他の質問に対する答えを知らない。別の質問として投稿する価値があります。 –

関連する問題