Определение Typescript: объединить с JQuery, только если модуль импортирован - PullRequest
0 голосов
/ 28 июня 2019

Я использую плагин jquery, который не поставляется с файлами определения машинописи и не доступен на npm.

Я решил написать собственное определение (.d.ts) для этого плагина. У меня это в основном работает, хотя есть один раздражающий аспект, который я хотел бы исправить (если это возможно).

Чтобы добавить метод плагина в интерфейс jquery, я объявляю следующее в отдельном файле .d.ts:

import {Options} from "foo";

declare global {
    interface JQuery {
        foo(options: Options): JQuery;
    }
}

Это приводит к тому, что метод foo отображается в intellisense, даже если я не импортировал модуль. В идеале я бы хотел, чтобы он отображался только в том случае, если был импортирован модуль "foo".

Я пробовал несколько разных вещей, но ни одна из них, похоже, не работает:

  • Объявление интерфейса внутри модуля foo (в том же файле, что и у foo .d.ts)
  • Удалить declare global {
  • Поместите блок declare global { в файл foo .d.ts, но за пределами оператора declare module.
...