console.log("Hello, World🌟!")
console.log("Hello, World🌟!")
🌍 Привет мир!👋
Cегодня первая статья из раздела #TypeScript, в которой поговорим о том, почему не стоит писать файлы с расширением .
d.ts в typescript проектах самостоятельно. Наткнулся на видео от Matt Pocock, автора курса TypeScript Wizard, и поясню что он имел ввиду.⁉️ Что за файлы с расширением
.d.ts?⚙️ Это файлы которые могут содержать только объявления типов и никакой имплементации.
Пример, в котором отличие декларации от имплементации.
// Declaration (.d.ts)
export function getGreeting(name: string): string
// Implementation (.ts)
export function getGreeting(name: string): string {
return hello world ${name}
}
👀 Как можно заметить в имплементации видно что происходит в функции и что она возвращает, в то время как в декларации это опущено.
🔍 Когда используются .
d.ts файлы?Используются если вы пишите библиотеку для внешнего потребления. Все что нужно пользователям для соблюдения типизации, это наличие файлов .d.ts рядом с компилированным
javaScript кодом.📝 Например: у нас есть функция
getGreeting и для нее, мы можем иметь 2 файла:- getGreeting.d.ts
- getGreeting.js
соответственно для хранения декларации и имплементации, и таким образом как будто все хорошо.
⁉️ Но почему не стоит использовать .
d.ts файлы?Мы можем создать файл с расширением .
ts, который будет содержать декларацию и имплементацию. И перед тем как опубликовать библиотеку сделать ряд изменений.💻 Это изменить настройки в файле конфигурации
tsconfig.json ,добавить опцию
declaration , которая автоматически сгенерирует файлы .d.ts для .ts и .js файлов.{
"compilerOptions": {
"declaration": true,
}
}
и указать точку входа для
declaration file, делается это путем добавления types в package.json.{
"name": "new project with d.ts",
"version": "1.0.0",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"scripts": {
"build": "tsc"
}
}
Автогенерация
.d.ts предоставит все преимущества без необходимости писать их самостоятельно.⚠️ Все что вы делаете с
d.ts файлами вы можете повторить и с расширением .ts.⚙️ Даже расширять типы от используемых библиотек или делать тип глобальным, для этого можно в
.ts использовать:declare global {...}
⚙️ Все, что находится внутри фигурных скобок, будет рассматриваться как глобальное объявление, и именно так и работают .
d.ts файлы.‼️ Ну и самое главное, некоторые проекты используют в файле tsconfig
skipLibCheck:{
"compilerOptions": {
"skipLibCheck": true,
}
}
⚙️ Эта опция пропускает проверку типов не только из внешних файлов .
d.ts, но и из ваших собственных. Это означает, что типы, определенные в файле .d.ts, могут быть неправильными, и вы даже не будете знать об этом!📚 Итого:
Таким образом, писать файлы .
d.ts выглядит бессмысленно, можно просто использовать файлы с расширением .ts, они снизят когнитивную нагрузку у разработчика и снизят вероятность возникновения ошибок типов в коде, единственный необходимый вариант это генерировать их автоматически.💬 Делитесь своим мнением в комментариях👇! Если вам понравилась статья, не забудьте поставить лайк! 👍
#TYPESCRIPT

Хотите больше таких постов?
Подпишитесь на канал и читайте продолжение в Telegram.