目指す
は、私は2つのパラメータ取るプライベート機能があります。対応する関数インターフェイスのパラメータを取るインターフェイス上の関数フィールドを作成するにはどうすればよいですか?
export interface XhrHelperFunction extends Function {
(cb ?: Function, lock ?: boolean) : any;
}
を...と私は、ユーザーがそのプライベート関数を呼び出すことができますパブリック関数のためのインターフェースがあります。
export interface Actionable {
run(cb : Function, lock?: boolean) : void;
}
を
この形式の問題は、XhrHelperFunction
のインターフェイスを更新するたびに、対応するように私のActionable
インターフェイスのフォーマットを更新する必要があるということです。したがって、私は似た方法でActionable
を書き換えることを好むだろう:run(/* Parameters of XhrHelperFunction */) : void;
試み
私は次の形式を試してみた:
export interface Actionable {
run(XhrHelperFunction) : void;
}
クラス内run
メソッドのシグネチャを書くときにこれは動作しますしかし、クラスインスタンスにパラメータを渡すときには機能しません。明らかにパラメータがfunction run(XhrHelperFunction) : void
の署名に準拠していないため、actionable.run(cb, lock)
です。括弧で囲んでXhrHelperFunction
にキャストすることもできません。
あなたはどう思いますか?
ちょうど私が探していた、ありがとう。はい、私は直接関数を公開するかどうか議論してきました。主に、Actionableを呼び出す前に予備コードを実行するオプションを与えています(例えば、ロックをトグルするなどいくつかの状態を設定するなど)が、関数自体の中からすべてを処理できました。あなたが提案したようにすることができるかもしれません。 –