声明用于TypeScript的JS库

dma*_*sen 8 javascript jquery jquery-address typescript definitelytyped

类似问题有很多线索,但据我所知,这个问题是独一无二的.

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

The property 'address' does not exist on value of type 'jQueryStatic'
Run Code Online (Sandbox Code Playgroud)

根据这个帖子,我试图在address里面定义jquery.d.ts:

interface JQueryStatic {
    address(options): any;
    ...
}
Run Code Online (Sandbox Code Playgroud)

我认为这似乎适用于$ .address(); 但不适用于任何地址的方法.我也尝试过这个帖子创建自己的.d.ts文件,但仍然没有运气.我尝试declare在.d.ts文件中使用.没运气.

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

$.address.parameter('param', 1);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我得到:

The property 'parameter' does not exist on value of type 'address'
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题的任何想法?

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

Rya*_*ugh 11

你不应该自己编辑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;
}
Run Code Online (Sandbox Code Playgroud)