OctoberCMSのJavaScript APIを使用してAjaxコールを呼ぶ際、$.request()
を使用するが、TypeScriptから呼ぶとエラーになる。型定義ファイルを入れて解決する話。
TL;TR
下記で説明した内容をnodeパッケージとして利用可能にしたので、下記だけで解決する。
npm install pikanji/oc-framework-ts-types
説明
TypeScriptで$.request()
を使用すると不明なプロパティとしてエラーになる。
TS2339: Property 'request' does not exist on type 'JQueryStatic<HTMLElement>'.
原因は、request()
メソッドはjQueryにOctoberCMSによって追加されたものであり、jQueryの型定義ファイルに含まれていないためである。
modules/system/assets/js/framework.js
にて、下記のように関数が追加されている。
$.fn.request = function (handler, option) {
...
return new Request($this, handler, options);
};
対策
下記のような型定義ファイルを作成することで解決できる。
interface JQueryStatic {
request(handler: string, options: any): any;
}
詳細は「jQueryに追加した関数のTypeScript型定義を作成する」に記載した。