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

Тренажер по TypeScript для пользователей с начальным уровнем подготовки.

Тренажер по TypeScript

Файлы с расширением .d.ts — это файлы деклараций (Declaration Files). Они не содержат исполняемого кода, а служат только для описания типов данных. Это своего рода «контракт» или «заголовочный файл» для TypeScript.

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

Список тем

1. Код vs Декларации

id: 40764_ts_dts_intro_01

Перед вами фрагменты кода TypeScript, которые могут относиться либо к файлам реализации (.ts), либо к файлам описания типов (.d.ts). Разнесите их по двум категориям: 'Файл .ts (реализация)' и 'Файл .d.ts (описание типов)'. Обратите внимание, что файлы .d.ts содержат только декларации типов без реализации кода, тогда как .ts файлы включают исполняемый код. Каждый элемент должен оказаться ровно в одной категории.

Перетяните элементы в соответствующие блоки
Файл .ts (реализация)
Файл .d.ts (описание типов)
function add(a: number, b: number): number { return a + b; }
declare function add(a: number, b: number): number;
interface Point { x: number; y: number; }
export const PI = 3.14;
type UserRole = 'admin' | 'user' | 'guest';
class Calculator { add(a: number, b: number): number { return a + b; } }
declare class Calculator { add(a: number, b: number): number; }
export default function greet(name: string): string { return `Hello, ${name}!`; }
Сообщения
Проверить
Показать подсказку

2. Ключевое слово declare

id: 40764_ts_dts_intro_02

В этом задании вам нужно дополнить фрагмент кода файла декларации TypeScript (.d.ts), объявив глобальную переменную. Ключевое слово `declare` пропущено, и вам необходимо вставить его в указанное место, чтобы объявление стало корректным. Убедитесь, что синтаксис соответствует TypeScript и файл декларации может быть использован для описания глобальных переменных без реализации.

Заполните пропуски
// Файл декларации .d.ts
input1S var myGlobalVar: string;
// Глобальная переменная для использования в проекте
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

3. Запрет реализации

id: 40764_ts_dts_intro_03

В этом фрагменте кода файла деклараций TypeScript (.d.ts) допущена ошибка, связанная с запретом реализации. Найдите строку с ошибкой и исправьте её, чтобы файл соответствовал правилам объявления типов.

Найдите ошибку и исправьте
// Файл: utils.d.ts
declare const MAX_SIZE: number;
declare function isReady(): boolean { return true; }
declare interface Config {
  timeout: number;
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Элементы декларации

id: 40764_ts_dts_intro_04

Внимательно изучите содержимое файла деклараций TypeScript (.d.ts). Ваша задача — отметить все конструкции, которые определяют типы. К таким конструкциям относятся объявления интерфейсов (interface), псевдонимы типов (type) и объявления глобальных переменных (declare var). Не отмечайте импорты, экспорты, комментарии, объявления функций или другие элементы, которые не определяют типы напрямую.

Кликните по всем фрагментам, которые подходят под условие задания.
// Файл: declarations.d.ts
{{import~|~t0}} { SomeType } from './other';

export {{interface~|~t1}} {{MyInterface~|~t2}} {
    id: number;
    name: string;
}

export {{type~|~t3}} {{MyType~|~t4}} = string | number;

{{declare~|~t5}} {{var~|~t6}} {{myGlobal~|~t7}}: string;

export {{declare~|~t8}} {{function~|~t9}} myFunc(arg: string): void;

// Это комментарий, не определяет тип
Сообщения
Проверить
Показать подсказку

5. Расширение файла

id: 40764_ts_dts_intro_05

В этом задании вам предстоит заполнить пропуск в коде, выбрав правильное расширение файла для добавления типов к скачанной JavaScript библиотеке. Вы увидите фрагмент кода с одним пропуском, обозначенным как input1. При клике на пропуск откроется выпадающий список с вариантами расширений файлов. Ваша задача — выбрать из списка тот вариант, который соответствует файлу деклараций типов в TypeScript. Обратите внимание, что файлы деклараций используются для описания типов существующего JavaScript кода, особенно для библиотек, написанных на JavaScript.

Нужно правильно расставить в пропуски предложенные варианты
// Мы скачали JS библиотеку и хотим добавить к ней типы.
// Какой файл нужно создать для объявления типов?

const declarationFile: string = 'library' + input1S;
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

6. Описание функции

id: 40764_ts_dts_intro_06

Из предложенных строк соберите корректную декларацию функции в файле .d.ts. Декларация должна описывать функцию с именем 'calculateDiscount', которая принимает два параметра: 'price' типа number и 'discountPercent' типа number, и возвращает значение типа number. В решении должны использоваться только необходимые строки, лишние строки включать не нужно. Обратите внимание на правильный синтаксис: declare function, имя функции, параметры с типами, тип возвращаемого значения и завершающая точка с запятой.

Перетяните в правильном порядке строки из одного блока в другой
declare function calculateDiscount(price: number, discountPercent: number): number;
declare function calculateDiscount(price: number, discountPercent: number): string;
function calculateDiscount(price: number, discountPercent: number): number;
declare function calculateDiscount(price: number, discountPercent: number);
declare function calculateDiscount(price, discountPercent): number;
declare function calculateDiscount(price: number, discountPercent: number): number
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

7. Назначение файла

id: 40764_ts_dts_intro_07

Рассмотрите фрагмент кода на TypeScript, в котором используется файл деклараций (.d.ts). Вопрос: будет ли скомпилирован файл `definitions.d.ts` в `definitions.js`? Введите ответ в виде одного слова: 'нет' или 'false' (без кавычек).

Что должно получиться?
// definitions.d.ts
declare module "my-module" {
    export function doSomething(): void;
}

// main.ts
import { doSomething } from "my-module";

doSomething();
Сообщения
Проверить
Показать подсказку

TypeScript: компиляция и запуск

id: 40764_compiler
TS
Запустить тренажёр (TypeScript)
НайтиКурс.Ру