2016-12-01 4 views
2

私はフォルダ./pluginsを持っています。プラグインは、以下のインターフェースがありますフローを使用するために一致するファイルのセットのエクスポートタイプを宣言するにはどうすればよいですか?

type PluginType =() => Promise<(ad: AdType) => TargetingParameterType>; 

を、Iは、例えば、各プラグインのスクリプトにPluginTypeをインポートおよびエクスポートのタイプを宣言する必要がありますこれは私が現時点ではやっているものです:

import type { 
    PluginType 
} from './types'; 

const myPlugin: PluginType = async() => { 
    return (ad) => { 
    return {}; 
    }; 
}; 

export default myPlugin; 
このアプローチに問題がある

それは中間変数を作成する必要が
  1. (私はexport defaultタイプに注釈を付けるためのインライン方法を見つけることができませんでした)
  2. この注釈はすべて./plugins/*.jsファイルに含まれている必要があります。

各ファイルに型宣言を追加することなく、フローは./plugins/*.jsフォルダ内のすべてのファイルにPluginTypeタイプを適用するように設定する方法はありますか?

+0

を、あなたはあなたがするフロー必要なものを少し明確に説明してもらえますか?現在の設定はどのように見えますか? – ahstro

+1

@ahstro私は詳細と改善された文言を追加しました。 – Gajus

+0

@Gajus:あなたは私の解決策で運がありましたか?問題があれば自由に質問を編集してください。私は答えを修正しようとします。 – Aurora0001

答えて

2

".flowconfig-style" declarationsを使用して、プロジェクト全体の型宣言を作成できます。あなたの.flowconfigでは、追加:

[libs] 

decls/ 

は、次にディレクトリdeclsを作成し、その中に含まplugins.jsと呼ばれるファイルを作成します。

declare type PluginType =() => Promise<(ad: AdType) => TargetingParameterType>;  

あなたはPluginTypeは、このファイルに依存するタイプを含める必要があるかもしれませんあまりにも。

According to the documentation

型を宣言するために同様に有用です。他の宣言と同様に、型宣言はプロジェクト内のすべてのモジュールで可視にすることもできます。

中間変数を作成しないようにするために、あなたはtypecast構文を使用することができます。

export default (async() => { 
    return (ad) => { 
     return {}; 
    }; 
}: PluginType); 
+0

これは 'import type'行を取り除くことを可能にしますが、' const myPlugin:PluginType =()=> {};を実行する必要があります。デフォルトのmyPlugin'をエクスポートします。宣言された型をファイルのセットへのデフォルトのエクスポートとして適用するか、またはデフォルトのエクスポートに注釈を付ける別の構文を適用する方法はありませんか? – Gajus

+1

私はこれをテストしていませんが、私はそれを修正する必要があると思ったところで編集しました。 – Aurora0001

関連する問題