Ответ вслух Middle tsconfig и декларации обновлено

Библиотека без типов

Вопрос

Вы подключили библиотеку, а TypeScript пишет «Could not find a declaration file for module». Что будете делать?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Сначала ищу готовые типы: пакет @types/имя из DefinitelyTyped, или проверяю, не появились ли встроенные типы в свежей версии библиотеки. Если типов нет нигде, есть два пути.

Что должно прозвучать в ответе

  • Проверить, нет ли типов в пакете `@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 ошибок.

Термины по теме