I am creating a jquery widget from a factory widget typed in typescript. How to provide good intellisense without having to write .d.ts?
Example:
$.widget("ui.mywidget", { options: { myoption: "" }, doSomething: function () { this._hasDoSomething = true; }, hasDoSomething: function (): bool { return <bool>this._hasDoSomething; } }); interface MyWidgetOptions { myoption: string; } interface MyWidget extends Widget, MyWidgetOptions {} interface NLIB { mywidget: MyWidget; } interface JQuery { mywidget(): JQuery; mywidget(methodName: string): JQuery; mywidget(options: MyWidgetOptions): JQuery; mywidget(optionLiteral: string, optionName: string): any; mywidget(optionLiteral: string, options: MyWidgetOptions): any; mywidget(optionLiteral: string, optionName: string, optionValue: any): JQuery; } interface JQueryStatic { nlib: NLIB; }
It's too boring to write .d.ts for each plugin. Any alternative?
Note: If I do not include mywidget.d.ts, this code will not compile and I will not have intellisense:
///<reference path="path/to/jqueryui-1.9.d.ts"/> $(".teste").mywidget({ myoption: "asdadds" });
/ * compiler: ... the property "mywidget" does not exist by value of type "jQuery" * /
source share