我正在製作一個jQuery小部件,打字稿中輸入了widget factory。如何提供良好的智能感知,而無需編寫.d.ts?使用打字稿製作jquery ui的最佳方式
例如:
/*mywidget.ts*/
$.widget("ui.mywidget", {
options: {
myoption: ""
},
doSomething: function() {
this._hasDoSomething = true;
/*do doSomething*/
},
hasDoSomething: function(): bool {
return <bool>this._hasDoSomething;
}
});
/*mywidget.d.ts*/
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;
}
/// <reference path="teste.d.ts" />
$(".teste").mywidget({
myoption: "asdadds"
});
太無聊寫爲每個插件.d.ts。任何選擇?
注: 如果我不包括mywidget.d.ts這個代碼將不會編譯,我不會有智能感知:
///<reference path="path/to/jqueryui-1.9.d.ts"/>
$(".teste").mywidget({
myoption: "asdadds"
});
/* 編譯出來: ...屬性'mywidget'類型'jQuery'的值不存在 */
我相信我分享這個問題的動機。我**愛**打字稿,但我希望它有一個打字稿 - 「本機」DOM操作庫的一個很好的答案,可以擴展到構建打字稿本機用戶界面小部件(如自動完成)。我理解爲什麼JQuery UI Widget Factory(我也喜歡,預打字)在這裏是一個糟糕的匹配,但是更多的typecripty解決方案可能取而代之嗎? –