Вы можете расширить интерфейсы таким образом, когда они находятся в одной области видимости. JQuery
файлы объявлений объявляют интерфейсы в глобальной области видимости, так что это не проблема.
Вы просто добавляете файл jquery-extension.d.ts
в свой проект (имя не имеет значения), а затем снова объявляете интерфейс, добавляя нужные методы или свойства. Затем TypeScript подберет его и смешает два объявления типов в одном.
Конечно, объявление только методов заставит TypeScript думать, что они существуют. Вам все еще нужно определить их (в другом файле, а не в файле d.ts
), иначе вы получите ошибку времени выполнения при попытке их выполнить.
Пример: jquery-extension.d.ts
interface JQueryStatic {
count(): number;
}
jquery-extension.ts
:
jQuery.fn.count = function() {
return this.length;
}
Если вы просто добавите приведенный выше код без расширения интерфейса, TypeScript будет протестовать, заявив, что count
не является известным свойством интерфейса JQueryStatic
.
Тогда вам просто нужно импортировать jquery-extension.ts
в точку входа вашего приложения:
import 'jquery-extension'
И готово. Файл d.ts
импортировать не нужно, поскольку они являются файлами объявлений окружения, и компилятор сам их забирает.