Я использую @types/swiper в проекте Angular 6, и при попытке создать новый экземпляр Swiper я получаю сообщение об ошибке (Невозможно использовать 'new' с выражением, тип которого не имеет вызова или подписи конструкции).
Проблема возникает, когда я ввожу переменные, не относящиеся к Swiper, пожалуйста, проверьте StackBlitz. кстати, начиная с npm 5 модулей добавляются в качестве зависимости по умолчанию, поэтому опция --save является избыточной (;





Объявление модуля swiper в @types/swiper неверно: в объявлении говорится, что модуль имеет именованный экспорт Swiper класса Swiper, но на самом деле он имеет экспорт класса по умолчанию (или назначение экспорта в зависимости от того, использует ли ваш сборщик CommonJS или версия ES6: ах, тупая упаковка). Я отправил пул реквест для ОпределенноТипед, чтобы попытаться исправить объявление. Если вы используете мое измененное объявление (возможные способы сделать это см. В этот ответ), ваш код должен успешно скомпилироваться.
Когда я писал это определение типа, я не думал, что кто-то, возможно, захочет использовать версию, отличную от ESM.
Я попытался воспроизвести ошибку на моем локальном компьютере, и, пытаясь сделать это, я сначала установил Swiper с помощью 'npm i --save swiper', затем типы Swiper с 'npm install --save @ types / swiper' и каким-то образом удалил Swiper . Я также пробовал модификацию tsconfig и typings.d.ts, но ничего не работало. Затем я понял, что Swiper отсутствует в моих node_modules. Снова установил Swiper и ошибка исчезла :). Пожалуйста, проверьте свои node_modules еще раз.