2016-06-14 13 views
0

Flowを使用して既存の宣言を拡張/追加する方法はありますか?フローのMoment.js宣言にプラグインメソッドを追加しますか?

具体的には、ここではMoment.jsa plugin that adds a format method to the Duration objectの両方を使用しています。

私はFlowInterfacesにthird-party type declaration for momentjsを配置しましたが、(当然)プラグインが提供する余分な方法はありません。

私は新しいメソッドの追加ラインと全体の宣言ファイルを複製してきましたが、理想的に既存の宣言のようなものに更新する方法があると思い、これを解決するために現在:

type moment$MomentOptions += { 
    format(format: ?string): string; // moment-duration-format 
} 

を。 ..しかし、より良い構文で:)

私の質問は、このようなことが流れのために存在するのですか?

答えて

1

悲しいことに、全体の定義を無効にすることなく、これはできませんcurrently

また、moment$Momentを拡張して、プロジェクトでこのタイプを使用することもできます。しかし、ほとんどの結果をキャストする必要があります。したがって、それがより良い解決策であるかどうかは分かりません。いくつかのケースで役立つかもしれません。

declare class moment$MyMoment extends moment$Moment { 
    format(format: ?string): string; 
} 

function fn(m: moment$MyMoment) { 
    m.format(''); // OK 
} 

const m = ((moment(new Date()): any): moment$MyMoment); 
fn(m); // OK 
関連する問題