2017-08-20 16 views
1

私のソースコードからFlowの冗長性を削除したいと思います。型を別のファイルで宣言する方法はありますか?外部ファイルにフロータイプの注釈を抽出する

これは私が持っているものです。

// @flow 
// src/writer.js 
class Writer { 
    write(text: string):string { 
    return `I wrote ${text}` 
    } 
} 

これは私が達成しようとしているものです:

// @flow 
// src/writer.js 
class Writer { 
    write(text) { 
    return `I wrote ${text}` 
    } 
} 

// src/definitions/writer.js.flow 
declare class Writer { 
    write(text: string):string 
} 

私はflow-typedフォルダにwriter.js.flowを配置しようと、私もIWriterインタフェースを宣言してみましたWriterが拡張されます。流れはそれを好まない。

関数にも正しく注釈を付ける必要がある独自の変数を宣言できるため、これが可能であるかどうかはわかりません。

+0

'.js.flow'ファイルを'.js'ファイル? – loganfsmyth

+0

@loganfsmyth動作しません –

+0

これをもう一度見て、指定されたファイルのエクスポートされたクラスを型検査しようとしていますか?フローの '.js.flow'ファイルは、モジュールの境界で公開される型用ですが、実際にはそのロジックを実装しているファイルの中には何の効果もありません。私は、この場合、物事を分割するというあなたの動機を理解しているとは思えません。すべての機能を複製する必要はありません。 – loganfsmyth

答えて

2

Flowで必要なものを正確に行う方法はありません。サポートされているいくつかの特定のユースケースがあります。

  • あなたが(多分図書館のような)いくつかの非流動コードといくつかのフロー・アプリケーション・コードを持っている、とあなたはそれがフローコードを可能にしたい場合非フローコードを使用するが、どのタイプが関係しているかを知るには、型なしコードに"library definition"を書くことができます。このライブラリ定義は実装コードに対してチェックされていないことを理解することが重要です。これは真であるとみなされているので、libdefを書くことに注意する必要があります。

  • フローコードがあり、フローアノテーションなしで読み込みまたは実行したい場合は、flow-remove-typesを使用して、ファイルからフロー構文を取り除くことができます。

しかし、私はあなたが何かをしたいと思う。 Flowアノテーションなしでコードを書いてから別のファイルにアノテーションを書きたいが、Flowに対してアノテーションをコードに対してチェックさせるように思えます。これはFlowが現在サポートしているものではありません。

(別名として、追加すると期待しているものではありません。タイプの主なメリットは、コードを読み書きしたり考えたりする際の助けとなります。その多くの型を書き出すことができます。しかし、(エクスポートされた関数のように)あなたがするコードは、一般的にコードについて考えるのに役立ちます)。

関連する問題