@IliaMal

Почему TypeScript ругается на внешний класс?

Здравствуйте.
Для валидации инпутов испольую https://imask.js.org
Скопировал скрипт из CDN себе в проект, подключаю следующим образом:
import "js/moduls/external/imask.js";

const phoneInput = document.querySelector("input[type='tel']");
const imask = new IMask.createMask({ mask: "+{7}(000)000-00-00" }); 

phoneInput.addEventListener('input', e => {
    phoneInput.value = imask.resolve(phoneInput.value);
    console.log('isComplete', imask.isComplete);
});

На JavaScript все работает, на TypeScript ругается на IMask
TS2448: Block-scoped variable 'IMask' used before its declaration.


Как объяснить TS что IMask можно использовать?
  • Вопрос задан
  • 200 просмотров
Решения вопроса 1
@IliaMal Автор вопроса
Так как TypeScript не в курсе что происходит в импортированном JavaScript файле, необходимо описать все объекты объявленные в этом файле через декларации.

Для примера из тикета:
Рядом с файлом mask.js добавил файл mask.d.js cj следуюзем содержимым:
declare var IMask: IMask;
// использовать именно var, const или let не будет работать

После этого IMask будет определяться в .ts файле
63c0191bbf292956861736.png
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@historydev
Острая аллергия на анимешников
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы