1

TypeScript を使用している Web アプリケーションで、jQuery Tools ライブラリのScrollable UI ツールを使用したいと考えています。残念ながら、 DefiniteTyped GitHub リポジトリには対応する定義ファイルがないため、独自に作成しました。

/// <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 ファイルが typescript コンパイラによって認識されないのはなぜですか?

4

1 に答える 1

1

あなたの定義は私には問題ないように見えたので、Definite Typed から jQuery.d.ts を取得し、コードを scrollable.d.ts に追加しました。すべて正常に機能しました...あなたの定義を参照している限り...

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

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

これは、定義ファイルを参照していないのではないかと思いました (私はそれを scrollable.d.ts と呼んでいましたが、jquery.scrollable.d.ts などと呼んでいた可能性があります)。

于 2013-09-10T20:11:05.133 に答える