声明与TypeScript一起使用的JS库

Declaring a JS library for use with TypeScript

本文关键字:JS TypeScript 一起 声明      更新时间:2023-09-26

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

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

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

根据这个线程,我尝试在jquery.d.ts:中定义address

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

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

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

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

在这种情况下,我得到:

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

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

edit:如果有帮助的话,我在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;
}

以下内容进入jquery.d.ts:

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

希望能有所帮助!