На данный момент мы поговорили о множестве разных вещей, связанных с TypeScript.

Но теперь нам нужно понять, как работать с библиотеками JavaScript с нашим кодом TypeScript.

И это действительно легко благодаря «файлам объявлений», потому что эти файлы сообщают TypeScript, как создаются библиотеки и какова их структура.

Но могу ли я работать без файлов деклараций?

Что вы можете. Это пример кода, загружающего внешнюю библиотеку.

В большинстве случаев, если вы загружаете библиотеку как import * as NAME from 'path', она будет работать, но вы не сможете ничего узнать из библиотеки.

Если у вас есть проблемы, вы можете попробовать что-то вроде этого.

Но да, это некрасиво.

Работа с файлами деклараций

Нам повезло, что у нас огромное сообщество, а файлы объявлений постоянно развиваются. Благодаря этому у нас есть много файлов объявлений для библиотек, и в целом это не будет проблемой.

Есть два сценария, в которых мы можем найти файлы объявлений для наших библиотек.

  • В библиотеке есть «.d.ts» (файл декларации).

В этом сценарии библиотека будет работать как любая библиотека TypeScript, не беспокойтесь и продолжайте работать над своим проектом.

  • В библиотеке нет «.d.ts», но есть типизация в npm.

Если вы не уверены в этом, просто зайдите на сайт npm и выполните поиск по запросу `@ types / name-of-library`

Наверное, ты найдешь свою библиотеку.

Но, может быть, вам не повезло и его никто раньше не создавал ... или у вас есть собственная библиотека. Пришло время создать d.ts

Создание собственных файлов деклараций

Если вы хотите создавать свои собственные файлы, лучше всего следовать официальным документам на собственном примере.

Давайте посмотрим на несколько примеров:

Вы можете объявить переменную или функцию:

Или вы можете объявить все пространство имен:

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

Вы можете использовать Dts-Gen от Microsoft.

Я искал библиотеку без набора текста. В этом случае я собираюсь использовать aku из Kiko Beats.

Вы можете найти весь код здесь.

Если я импортирую библиотеку, я ничего не знаю о библиотеке, все any для TypeScript.

Но если я сгенерирую типизацию с помощью упомянутого ранее инструмента:

Это круто 👏🏼 теперь мы можем изменить сгенерированный файл, чтобы добавить более точную информацию.

Вы можете найти больше информации об этой статье в официальном руководстве.
И информацию о статьях зачем я это делаю о TypeScript.
Давайте продолжим со следующей главы: Расширение типов.
И помните, обратная связь приветствуется 🤙.