jquery-ui – 使用打字稿制作jquery ui的最佳方法

前端之家收集整理的这篇文章主要介绍了jquery-ui – 使用打字稿制作jquery ui的最佳方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在制作一个 jquery小部件,其中 widget factory类型为打字稿.如何在不写.d.ts的情况下提供良好的智能感知?

例如:

/*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这个代码将无法编译,我将不会有intellisense:

///<reference path="path/to/jqueryui-1.9.d.ts"/>
$(".teste").mywidget({ 
    myoption: "asdadds"
});

/ *
编译出:
属性’mywidget’在’JQuery’类型的值上不存在
* /

解决方法

GitHub上的 DefinitelyTyped项目为大多数流行的JavaScript库提供定义文件.

您需要做的就是下载所需的文件并在代码中引用它,如:

///<reference path="path/to/jqueryui-1.9.d.ts"/>

猜你在找的jQuery相关文章