Пейджер

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
Медиа 1
Хотите больше таких постов?
Подпишитесь на канал и читайте продолжение в Telegram.
Подписаться на @ivanchikovitclub Открыть пост в Telegram