Как игнорировать TS1192 при использовании @types/cleave.js в моем проекте angular?

Я использую cleave.js (^ 1.5.2) в приложении Angular 6 вместе с пакетом @types/cleave.js (^ 1.4.0), и происходит странная вещь. Если я запускаю ng build для сборки приложения, оно завершается со следующими ошибками:

ERROR in src/app/app.component.ts(4,8): error TS1192: Module '"C:/Users/evcomes/Angular2/hellogular/node_modules/@types/cleave.js/index"' has no default export.
src/app/app.component.ts(5,8): error TS1192: Module '"C:/Users/evcomes/Angular2/hellogular/node_modules/@types/cleave.js/options/index"' has no default export.

Я вижу, что это правда в источнике для @types/cleave.js, но это просто библиотека типов, зачем мне экспорт по умолчанию? И действительно странная часть заключается в том, что если я затем изменяю (незначительно) файл, а затем сохраняю, автоматическая перестройка подбирает это (все еще показывает ошибку, но продолжается), будет счастливо обслуживать приложение angular в разработке и функциональность cleave.js который я использовал, работает даже в моем браузере. Так это не настоящая ошибка? Как я могу отключить его?

Любые учебники или руководства, которые я видел по использованию библиотек DefinitelyTyped, просто говорят, что их установка npm должна быть достаточной для их использования без каких-либо других модификаций, поэтому большинство проблем, которые я обнаруживаю при поиске, связаны с тем, что люди пытаются создать свой собственный TypeScript. привязки для JS-библиотек или собственных модулей в целом.

В package.json:

...
"@types/cleave.js": "^1.4.0",
"cleave.js": "^1.5.2"
...

В моем tsconfig.json:

...
"esModuleInterop": true,
"typeRoots": [
   "node_modules/@types"
]
...

В моем app.component.ts:

...
import Cleave from 'cleave.js';
import CleaveOptions from 'cleave.js/options'
...

Вы импортируете оба по умолчанию. Попробуйте import * as Cleave from 'cleave.js' или import { Cleave } .... Что показывает файл типизации как экспорт?

pmkro 17.07.2019 01:12

Ах, ладно, import * as CleaveOptions... сработало, но когда я делаю это только для Cleave, появляется другая ошибка: ERROR in src/app/app.component.ts(4,25): error TS2497: Module '"C:/Users/evcomes/Angular2/hellogular/node_modules/@types/c‌​leave.js/index"' resolves to a non-module entity and cannot be imported using this construct. Источник этого файла можно увидеть здесь: github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types‌​/…

Evan C 17.07.2019 16:06
export = Cleave; означает, что вам нужно установить allowSyntheticDefaultImports: true в свой tsconfig
pmkro 17.07.2019 16:53

Это сработало вместе с использованием формы import Cleave from 'cleave.js'. Вы хотите сделать из этого ответ, чтобы я мог дать вам репутацию?

Evan C 17.07.2019 18:08
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
997
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Большинство js-библиотек, которые получают типы TS, используют либо ...* as.... Или потребуйте allowSyntheticDefaultImports: true в tsconfig, чтобы экспорт по умолчанию работал правильно.

import * as CleaveOptions from 'cleave.js/options'
// AND
import Cleave from 'cleave.js'
//tsconfig.json
...
{
  allowSyntheticDefaultImports: true
}
...

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