Как использовать тип из необязательной зависимости в файле декларации? - PullRequest
0 голосов
/ 13 октября 2018

У меня есть библиотека JS, которая делает что-то вроде этого:

let OptionalLib;
function foo() {
  OptionalLib = require('optionallib');
  // Do stuff...
  return (something from optional lib);
}

, затем я добавляю наборы в файл .d.ts:

declare module 'mylib' {
  import { Bar } from 'optionallib';
  export function foo(): Bar;
}

проблема в том, чтоесли дополнительная библиотека не установлена, TS будет жаловаться на невозможность ее импорта, даже если она является дополнительной.Я попытался сделать это для того, чтобы получить наборы для библиотеки, когда она не установлена:

declare module 'optionallib' {
  interface Bar {}
}

, но проблема в том, что он, кажется, полностью заменяет фактический модуль, когда он установлен (без объединения объявлений)?), поэтому, если он экспортирован Baz, он не будет найден.

Так как мне решить эту проблему?Я знаю, что могу разделить часть, опираясь на эту необязательную библиотеку, на другую библиотеку, но я чувствую, что было бы удобнее оставить ее, поскольку она настолько мала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...