JavaRush /Курсы /Модуль 2: Fullstack /Использование деклараций типов

Использование деклараций типов

Модуль 2: Fullstack
10 уровень , 4 лекция
Открыта

5.1 Еще раз о важности декларации типов

Декларации типов (.d.ts файлы) в TypeScript играют важную роль в обеспечении типовой безопасности и автодополнения в IDE. Они позволяют TypeScript понимать типы, используемые в JavaScript коде, и предоставляют описания интерфейсов для сторонних библиотек.

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

Что такое .d.ts файлы?

Файлы деклараций типов (.d.ts) содержат только описания типов, интерфейсов и других элементов TypeScript без реального кода. Эти файлы используются компилятором TypeScript для проверки типов и предоставления информации об API JavaScript библиотек и модулей.

Почему важны декларации типов?

  1. Типовая безопасность: обеспечивают строгую типизацию для JavaScript и сторонних библиотек.
  2. Автодополнение в IDE: предоставляют информацию об API библиотек, улучшая автодополнение и подсказки в редакторах кода.
  3. Улучшенная документация: обеспечивают лучшее понимание типов и контрактов, используемых в коде.
  4. Совместимость: позволяют использовать библиотеки, написанные на JavaScript, в TypeScript проектах с полной типовой безопасностью.

5.2 Создание .d.ts файлов

Создание .d.ts файлов можно выполнить вручную или автоматически с помощью инструментов. Рассмотрим оба подхода.

1. Ручное создание .d.ts файлов

Ручное создание .d.ts файлов подходит для небольших библиотек или модулей. Рассмотрим пример создания деклараций типов для простой библиотеки math-utils.js.

math-utils.js:

JavaScript
    
      function add(a, b) {
        return a + b;
      }

      function subtract(a, b) {
        return a - b;
      }

      module.exports = { add, subtract };
    
  

Создадим файл math-utils.d.ts для декларации типов:

math-utils.d.ts:

TypeScript
    
      declare module 'math-utils' {
        export function add(a: number, b: number): number;
        export function subtract(a: number, b: number): number;
      }
    
  

Теперь TypeScript будет знать типы функций add и subtract, и мы можем использовать их с полной типовой безопасностью.

2. Автоматическое создание .d.ts файлов

Для более сложных проектов или библиотек можно использовать инструменты, такие как tsc (TypeScript Compiler), для автоматической генерации .d.ts файлов.

Шаги для автоматического создания .d.ts файлов:

1. Настройка TypeScript проекта:

Создайте tsconfig.json в корне вашего проекта:

JSON
    
      {
        "compilerOptions": {
          "declaration": true,
          "emitDeclarationOnly": true,
          "outDir": "./types",
          "strict": true
        },
        "include": ["src/**/*.ts"],
        "exclude": ["node_modules"]
      }
    
  

2. Компиляция TypeScript кода для генерации .d.ts файлов:

Terminal
    
      tsc
    
  

Эта команда сгенерирует .d.ts файлы в папке types, которые можно использовать для предоставления деклараций типов.

5.3 Использование .d.ts файлов

Декларации типов можно использовать для обеспечения типовой безопасности при работе со сторонними библиотеками, написанными на JavaScript. Рассмотрим несколько примеров.

1. Использование деклараций типов для сторонних библиотек

Если вы используете стороннюю библиотеку, которая не предоставляет свои декларации типов, вы можете создать их самостоятельно или установить готовые декларации из DefinitelyTyped.

Установка деклараций типов из DefinitelyTyped:

Terminal
    
      npm install --save-dev @types/lodash
    
  

Теперь вы можете использовать библиотеку lodash с полной типовой безопасностью и автодополнением:

TypeScript
    
      import _ from 'lodash';

      const array = [1, 2, 3, 4];
      const firstElement = _.first(array); // Тип firstElement будет number
    
  

2. Создание и использование пользовательских деклараций типов

Иногда вам нужно создать декларации типов для пользовательских модулей или библиотек. Рассмотрим пример.

custom-module.js:

JavaScript
    
      exports.hello = function(name) {
        return `Hello, ${name}!`;
      };
    
  

custom-module.d.ts:

TypeScript
    
      declare module 'custom-module' {
        export function hello(name: string): string;
      }
    
  

Теперь вы можете использовать custom-module в TypeScript проекте:

TypeScript
    
      import { hello } from 'custom-module';

      console.log(hello('World')); // Выведет "Hello, World!"
    
  

5.4 Автоматическая генерация деклараций типов

Кроме TypeScript Compiler, который может генерировать декларации типов при компиляции TypeScript кода, есть еще одна интересная утилита - dts-gen. Это инструмент для автоматической генерации деклараций типов для существующих JavaScript библиотек.

Установка dts-gen:

Terminal
    
      npm install -g dts-gen
    
  

Использование dts-gen для генерации .d.ts файлов:

Предположим, вы используете пакет lodash и хотите сгенерировать для него файл декларации типов:

Terminal
    
      dts-gen -m lodash
    
  

Эта команда создаст файл lodash.d.ts в текущей директории, который будет содержать декларации типов для lodash. Файл будет создан на основе существующего кода JavaScript, что даст возможность TypeScript-компилятору проверять типы при использовании lodash.

Генерация .d.ts файла для локального файла или модуля

Если у вас есть собственный JavaScript-файл или модуль, для которого нужно сгенерировать декларации типов, выполните следующую команду:

Terminal
    
      dts-gen -f ./path/to/your/file.js
    
  

Эта команда создаст файл file.d.ts в указанной директории, содержащий декларации типов для экспортируемых функций и объектов.

Лучшие практики при работе с .d.ts файлами

  1. Поддерживайте актуальность деклараций типов: обновляйте .d.ts файлы при изменении API библиотеки или модуля.
  2. Используйте комментарии и аннотации JSDoc: добавляйте комментарии и аннотации JSDoc в .d.ts файлы для улучшения читаемости и документации типов.
  3. Избегайте избыточности: не дублируйте декларации типов в .d.ts файлах и основном коде. Используйте типы из .d.ts файлов напрямую.
  4. Следуйте соглашениям по наименованию: используйте соглашения по наименованию типов и интерфейсов для улучшения читаемости и согласованности кода.
3
Задача
Модуль 2: Fullstack, 10 уровень, 4 лекция
Недоступна
Декларация для math-utils
Декларация для math-utils
3
Задача
Модуль 2: Fullstack, 10 уровень, 4 лекция
Недоступна
Генерация .d.ts файлов
Генерация .d.ts файлов
3
Задача
Модуль 2: Fullstack, 10 уровень, 4 лекция
Недоступна
Декларация для custom-module
Декларация для custom-module
3
Задача
Модуль 2: Fullstack, 10 уровень, 4 лекция
Недоступна
Декларация для lodash
Декларация для lodash
3
Опрос
Линтер и структура проекта, 10 уровень, 4 лекция
Недоступен
Линтер и структура проекта
Линтер и структура проекта
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ