Typescriptを使用してモデル化しようとしている多くのダイアログ(ログインダイアログ、登録ダイアログ、連絡先ダイアログなど)がWebサイト全体にあります。
jquery-ui d.tsファイルは、ダイアログインターフェイスを次のように定義します。
interface Dialog extends Widget, DialogOptions, DialogEvents{ }
すべてがオプションDialogOptions
でDialogEvents
あるため、問題はありませんが、ウィジェットインターフェイスは、私が理解していないいくつかの呼び出し署名を定義します。
interface Widget {
(methodName: string): JQuery;
(options: WidgetOptions): JQuery;
(options: AccordionOptions): JQuery;
(optionLiteral: string, optionName: string): any;
(optionLiteral: string, options: WidgetOptions): any;
(optionLiteral: string, optionName: string, optionValue: any): JQuery;
(name: string, prototype: any): JQuery;
(name: string, base: Function, prototype: any): JQuery;
}
このインターフェイスをクラスに実装しようとすると、次のようになります。
class LoginDialog implements Dialog {
}
コンパイラは文句を言います:
Class 'LoginDialog' declares interface 'Dialog' but does not implement it: Type 'Dialog' requires a call signature, but Type 'LoginDialog' lacks one.
これらの「呼び出し署名」を実装する方法や、それらが何をすべきかを理解していません。実際、呼び出し署名が何であるかさえ理解していません。
編集:
コールシグニチャの有効なユースケースの1つのタイプは、コールバックタイピングです。
interface ICallback{
(param: string) : void;
}
function someMethod(callback: ICallback){
callback('a string'); //Good
callback(5); //Bad
}
ただし、複数の呼び出し署名のユースケースを見つけることができず、jquery-ui.d.tsダイアログインターフェイスを実装する方法を理解していないため、質問は依然として存在します