Библиотека без типов
Вопрос
Вы подключили библиотеку, а TypeScript пишет «Could not find a declaration file for module». Что будете делать?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Проверить, нет ли типов в пакете `@types/имя` на DefinitelyTyped
Проверить, нет ли более новой версии библиотеки со встроенными типами или альтернативы
Быстрая заглушка: `declare module 'имя';` в своём `.d.ts`, всё станет `any`
Лучше: написать декларацию для тех функций, которыми реально пользуемся
Не включать `noImplicitAny: false` ради одного пакета
Что могут спросить следом
- Где положить свой
.d.ts, чтобы TypeScript его увидел? - Чем плоха заглушка
declare module? - Как поделиться типами с сообществом?
Разбор
Сначала ищу готовые типы: пакет @types/имя из DefinitelyTyped, или проверяю, не появились ли встроенные типы в свежей версии библиотеки. Если типов нет нигде, есть два пути. Быстрый: в своём types/имя.d.ts пишу declare module 'имя';, ошибка уходит, но всё из модуля становится any. Правильный: в том же блоке declare module описываю только те функции и опции, которыми проект реально пользуется, это обычно десяток строк. Файл должен попасть в include проекта. Если декларация получилась хорошей, её можно отправить в DefinitelyTyped. Чего не делаю: не выключаю noImplicitAny во всём проекте ради одного пакета.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.