Объявление библиотеки JS для использования с TypeScript

Есть много тем для подобных проблем, но, насколько я могу судить, это уникально.

Я использую плагин jQuery Address в своем приложении и хотел бы использовать его в файле TypeScript. К сожалению, для библиотеки нет доступного скрипта. Когда я пытаюсь использовать jQuery.address, я получаю:

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

В этой теме я попытался определить address Внутри jquery.d.ts:

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

И я думаю, что это работает для $.address(); но не для любого из методов адресации. Я также пытался создать свой собственный файл.d.ts для этой темы, но все же не повезло. И я попытался с помощью declare в файле.d.ts. Неудачно.

Единственный метод, который мне нужно использовать, это parameter метод...

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

В этом случае я получаю:

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

Любые идеи о том, как я могу решить эту проблему?

редактировать: я работаю в среде Visual Studio C# .net, если это помогает.

2 ответа

Решение

Вам не нужно редактировать 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;
}

Надеюсь, это поможет!

Другие вопросы по тегам