编译器没有选择自定义TypeScript定义文件?

时间:2013-09-10 17:38:40

标签: typescript jquery-tools

我想在我的Web应用程序中使用jQuery Tools库中的Scrollable UI tool,它使用的是TypeScript。由于遗憾的是DefinitelyTyped GitHub repository上没有相应的定义文件,我创建了自己的:

/// <reference path="./jquery-1.8.d.ts"/>

declare module JQueryTools {

    interface ScrollableOptions {
        clonedClass?: string;
        disabledClass?: string;
        easing?: string;
        items?: string;
        keyboard?: any; // boolean or string
        circular?: any // boolean
        next?: string;
        prev?: string;
        speed?: number;
        vertical?: any; // boolean
    }

    interface ScrollableUIParams {

    }

    interface ScrollableEvent {
        (event: Event, ui: ScrollableUIParams): void;
    }

    interface ScrollableEvents {
        onBeforeSeek?: ScrollableEvent;
        onSeek?: ScrollableEvent;
        onAddItem?: ScrollableEvent;
    }

    interface Scrollable extends ScrollableOptions, ScrollableEvents {
    }
}

interface JQuery {
    scrollable(): JQuery;
    scrollable(methodName: string): JQuery;
    scrollable(options: JQueryTools.ScrollableOptions): JQuery;
    scrollable(optionLiteral: string, optionName: string): any;
    scrollable(optionLiteral: string, options: JQueryTools.ScrollableOptions): any;
    scrollable(optionLiteral: string, optionName: string, optionValue: any): JQuery;
}

在我的.ts文件中,我有以下电话:

$(".scrollableWrapper").scrollable({vertical: true});

在编译时,我收到以下错误:

error TS2094: The property 'scrollable' does not exist on value of type 'JQuery'.

如果我从我的定义文件中删除所有代码并将其粘贴到jquery-1.8.d.ts文件中,那么一切似乎都能正常工作而没有编译错误。那么我的问题是:为什么我的定制d.ts文件没有被打字稿编译器选中?

1 个答案:

答案 0 :(得分:0)

您的定义对我来说没问题,所以我从Definitely Typed中抓取了jQuery.d.ts并将您的代码添加到scrollable.d.ts并且一切正常......只要我引用您的定义...

/// <reference path="scrollable.d.ts" />

$('#id').scrollable({ vertical: true });

这让我觉得你可能没有引用你的定义文件(我称之为scrollable.d.ts,但你可能已经将它命名为jquery.scrollable.d.ts或类似的东西)。