javascript - 声明用于 TypeScript 的 JS 库

标签 javascript jquery typescript jquery-address definitelytyped

类似问题有很多讨论帖,但据我所知,这是独一无二的。

我正在使用 jQuery Address我的应用程序中的插件,并希望在 TypeScript 文件中使用它。不幸的是没有 DefinitelyTyped可用于库的脚本。当我尝试使用 jQuery.address 时,我得到:

The property 'address' does not exist on value of type 'jQueryStatic'

根据 this thread ,我试图在 jquery.d.ts 中定义 address:

interface JQueryStatic {
    address(options): any;
    ...
}

而且我认为这似乎适用于 $.address();但不适用于任何地址的方法。我还尝试根据 this thread 创建自己的 .d.ts 文件,但仍然没有运气。我尝试在 .d.ts 文件中使用 declare 。运气不好。

我需要使用的唯一方法是参数方法...

$.address.parameter('param', 1);

在这种情况下我得到:

The property 'parameter' does not exist on value of type 'address'

关于如何解决这个问题有什么想法吗?

编辑:如果有帮助的话,我正在 Visual Studio C# .net 环境中工作。

最佳答案

您不需要编辑 jquery.d.ts 本身;将这些定义放在它们自己的文件中,以便可以正确维护它们。最小的东西是这样的:

// For methods on e.g. $('a')
interface JQuery {
    address(callback?: () => void): JQuery;
}

// For methods on $
interface JQueryStatic {
    address: JQueryAddressStatic;
}

interface JQueryAddressStatic {
    (): JQuery;
    parameter(name: string): string;
    parameter(name: string, value: string, append?: boolean): JQuery;
}

关于javascript - 声明用于 TypeScript 的 JS 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18113589/

相关文章:

angular - Angular 为 4 的 formArray 内的 Formarray

javascript - 如何在 jScrollPane 中获取最大滚动高度?

javascript - 如何只显示最后一个ajax请求结果

javascript - 异步/等待 promise 的返回变量

javascript - 在小间隔内通过 javascript 更新 css 时卡住轨道动画

jquery - 如何使用jquery以粗体显示特定单词?

html - 如何获取所选复选框的计数并在 Angular 2 中显示计数?

javascript - 不使用模板引擎时如何在 Express.js View 中包含 CSS 文件?

jquery - 如何根据依赖值删除元素(div)

javascript - TS : Deconstructing an array containing an object and a function (setter) only works with @ts-ignore