Для чего нужны файлы *.d.ts?
Во многих примерах TypeScript файлы *.d.ts
Тип автоматически создаются во время сборки. Некоторые из примеров говорят об объявлении окружения. Это, однако, не помогает мне понять идею и смысл этих файлов, поскольку они в основном просто повторяют то, что уже есть у других классов.
Так зачем создавать дополнительные *.d.ts
файлы? Как они помогают мне в моем коде?
2 ответа
Файлы определений, сгенерированные компилятором машинописи, действительно в основном повторяют написанный вами код, но с некоторыми заметными отличиями:
- Они не содержат реализацию, только объявления
- Только содержат общедоступные типы
Вариант использования этих файлов объявлений предназначен для распространения библиотек. Вы можете распространять библиотеку без исходного кода Typescript (так как это все равно не имеет значения во время выполнения) и распространять только скомпилированный JavaScript. Потребители JavaScript будут использовать JavaScript и не заботиться о его происхождении. Потребители Typescript также будут использовать JavaScript во время выполнения, но .d.ts
Файлы позволят компилятору проверять код, даже если исходный источник Typescript для библиотеки отсутствует.
Этот же подход можно также использовать для разбиения большого проекта на несколько небольших проектов, которые используют файлы объявлений для установления интерфейса между ними. Каждый проект может быть перекомпилирован независимо, без перекомпиляции всех, что сокращает время компиляции. Компилятор машинописного текста фактически планирует добавить встроенную поддержку для этого в будущем.
Если у вас есть файл JavaScript и вы хотите добавить в него расширенную информацию о типах, вы можете сделать это в файле декларации. Это как разделение вашего TypeScript между двумя файлами; файл JavaScript .js
только с простым JavaScript и файлом декларации .d.ts
со всей информацией о типе.
Это означает, что существует некоторая избыточность между файлами.
Обычно, если вы пишете библиотеку TypeScript, вы автоматически генерируете JavaScript и файл декларации и упаковываете их, а не оригинальный TypeScript. Это означает, что библиотека может использоваться из приложений JavaScript и TypeScript и позволяет библиотеке-потребителю использовать версию TypeScript, отличную от вашей библиотеки.
Если у вас есть файлы JavaScript, которые вы хотите включить в компиляцию, вам не нужно создавать файл объявления - в средах IDE допускается вывод в стиле TypeScript в JavaScript (например, VS Code позволяет // @ts-check
комментарий), и компилятор позволяет JavaScript включен в компиляцию, если вы этого хотите.