Создание файлов .d.ts из файлов .js
С TypeScript 3.7 TypeScript добавил поддержку генерации файлов .d.ts из JavaScript с использованием синтаксиса JSDoc.
Это означает, что вы можете контролировать опыт работы с редакторами, поддерживающими TypeScript, не перенося свой проект в TypeScript или не поддерживая файлы .d.ts в вашем коде. TypeScript поддерживает большинство тегов JSDoc, вы можете найти ссылку здесь.
Настройка проекта для вывода файлов .d.ts
Для добавления создания файлов .d.ts в ваш проект необходимо выполнить до четырёх шагов:
- Добавить TypeScript в зависимости для разработки
- Добавить
tsconfig.jsonдля настройки TypeScript - Запустить компилятор TypeScript для генерации соответствующих файлов .d.ts для JS-файлов
- (опционально) Изменить ваш файл package.json для указания типов
Добавление TypeScript
Вы можете узнать, как это сделать, на нашей странице установки.
TSConfig
TSConfig — это файл jsonc, который настраивает как флаги компилятора, так и указывает, где искать файлы. В этом случае вам понадобится файл, подобный следующему:
{
// Change this to match your project
"include": ["src/**/*"],
"compilerOptions": {
// Tells TypeScript to read JS files, as
// normally they are ignored as source files
"allowJs": true,
// Generate d.ts files
"declaration": true,
// This compiler run should
// only output d.ts files
"emitDeclarationOnly": true,
// Types should go into this directory.
// Removing this would place the .d.ts files
// next to the .js files
"outDir": "dist",
// go to js file when using IDE functions like
// "Go to Definition" in VSCode
"declarationMap": true
}
} Вы можете узнать больше об опциях в справочнике tsconfig. Альтернативой использованию файла TSConfig является использование командной строки, это поведение такое же, как у команды CLI.
npx -p typescript tsc src/**/*.js --declaration --allowJs --emitDeclarationOnly --outDir types
Запуск компилятора
Вы можете узнать, как это сделать, на нашей странице установки. Убедитесь, что эти файлы включены в ваш пакет, если у вас есть файлы в .gitignore вашего проекта.
Редактирование файла package.json
TypeScript повторяет разрешение модулей для узла в package.json, с дополнительным шагом для поиска файлов .d.ts. Приблизительно, разрешение сначала проверит опциональное поле types, затем поле "main", и, наконец, попытается найти index.d.ts в корне.
| Package.json | Расположение стандартного файла .d.ts |
|---|---|
| Поле “types” отсутствует | проверяет “main”, затем index.d.ts |
| “types”: “main.d.ts” | main.d.ts |
| “types”: “./dist/main.js” | ./dist/main.d.ts |
Если отсутствует, используется “main”
| Package.json | Расположение стандартного файла .d.ts |
|---|---|
| Поле “main” отсутствует | index.d.ts |
| “main”:“index.js” | index.d.ts |
| “main”:“./dist/index.js” | ./dist/index.d.ts |
Советы
Если вы хотите написать тесты для своих файлов .d.ts, попробуйте tsd.
© 2012-2023 Microsoft
Licensed under the Apache License, Version 2.0.
https://www.typescriptlang.org/docs/handbook/declaration-files/dts-from-js.html