Javascript 声明用于TypeScript的JS库

Javascript 声明用于TypeScript的JS库,javascript,jquery,typescript,jquery-address,definitelytyped,Javascript,Jquery,Typescript,Jquery Address,Definitelytyped,类似的问题有很多线程,但据我所知,这是唯一的 我正在我的应用程序中使用插件,并希望在TypeScript文件中使用它。遗憾的是,该库没有可用的脚本。当我尝试使用jQuery.address时,我得到: The property 'address' does not exist on value of type 'jQueryStatic' 根据,我试图在jquery.d.ts中定义地址: interface JQueryStatic { address(options): any;

类似的问题有很多线程,但据我所知,这是唯一的

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

The property 'address' does not exist on value of type 'jQueryStatic'
根据,我试图在
jquery.d.ts
中定义
地址

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

interface JQueryAddress {
    parameter(name, value): any;
}
我认为这似乎适用于$.address();但不适用于任何address方法。我还尝试创建自己的.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

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

interface JQueryAddress {
    parameter(name, value): any;
}

希望有帮助

您不需要编辑
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;
}

谢谢这解决了“地址”问题,但我仍然得到“属性“参数”在“地址”类型的值上不存在”。因此,$.address()可以工作,但$.address.parameter()不能。不要编辑现有的.d.ts文件来添加接口成员——接口是打开的,只需声明另一个同名的接口块即可扩展。是的!成功了。创建一个新文件更好。谢谢!