我想在我的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文件没有被打字稿编译器选中?
答案 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或类似的东西)。