2016-05-26 4 views
1

と互換性がありません。だから私は、このタイプのエラーを取得しています、そして、それはstdoutを明確にするためにはあまり意味

src/bins/assembler.js:19 
19:   compileTo(module, stdout); 
            ^^^^^^ tty$WriteStream. This type is incompatible with 
11: export function compileTo(repr: ir.Module, target: stream.Writable) { 
                 ^^^^^^^^^^^^^^^ stream$Writable. See: src/asm/output.js:11 

を作るていないものを私からprocess.stdout

ですstdoutstream.Writableであることを理解していますが、実装ではtype of stdoutを確認しましたが、そうです。

declare class Process extends events$EventEmitter { 
    ... 
    stdout : stream$Writable | tty$WriteStream; 
    ... 
} 

declaration var process: Process; 
0123私が達成しようとしているもののように

ない私が間違ってやっているのかわから...しかし、私は(今日のような)流れの最新バージョンを使用してい

$ flow version 
> Flow, a static type checker for JavaScript, version 0.25.0 

を持っていますそのようなファイルとして、あるいはこの場合stdoutで、一般的な出力を書き込み、私が理解からstream.Writableがそのタイプであり、それはそれの宣言に従って、インターフェイスのstdoutサブスクライブに...

は私の仮定が正しい、あるいは午前です機能私はのポイントを誤解していますstdoutの定義で演算子?私はcompileToで私のタイプについてもっと説明しなければなりませんか?または、私が間違って行ったことがありますか?flow

これは、流れに私の最初のプロジェクトは、私はstdout declarationによって指定されているように、タイプがstream$Writableまたはtty$WriteStreamのいずれかになります...

答えて

3

を紛れ何かを明らかに見逃している可能性があります。 compileTo関数はという宣言のみを受け入れます(stream$Writableで解決されるため)、この型に一致する引数を渡すことができます。

他の宣言に近づけば、tty$WriteStreamの解像度はStream.Writableに割り当てられません。

declare class tty$WriteStream extends net$Socket 
declare class net$Socket extends stream$Duplex 
declare class stream$Duplex extends stream$Readable 

可能にするには、両方の型を単純に追加するだけです。

function compileTo(repr: ir.Module, target: stream.Writable | tty.WriteStream) {} 

あなただけの定義についてもttyモジュールをインポートしたくない場合は

は、種類のグローバル定義を使用します。

function compileTo(repr: ir.Module, target: stream$Writable | tty$WriteStream) {} 
関連する問題