Подтвердить что ты не робот

В чем разница между *.d.ts vs *.ts в typescript?

Я начинаю играть с TypeScript, который я нашел действительно потрясающим. Но я смущен различием между *.d.ts и *.ts. Какая разница между ними? может ли кто-нибудь объяснить мне правильный пример?

4b9b3361

Ответ 1

TypeScript файл определения (*.d.ts)

Эти файлы используются для описания "формы" файла JavaScript для использования в TypeScript.

Например, скажем, у меня есть следующий JavaScript (Example.js):

function displayMessage(message) {
    alert(message);
}

Только с этим файлом мой код TypeScript не будет иметь никакой подсказки, чтобы эта функция существовала. Он не будет знать свое имя и не будет знать его параметров. Мы можем исправить это, описав его в файле определения как таковой (Example.d.ts):

declare function displayMessage(message: string);

Теперь я могу использовать функцию displayMessage в TypeScript без ошибок компиляции, и я получу ошибки компиляции при неправильном использовании (например, если бы я предоставил аргументы 2 вместо 1, я бы получил ошибка).

Вкратце: файлы определения позволяют использовать существующий код JavaScript в TypeScript без необходимости переписывать код в TypeScript.

TypeScript файл (.ts)

Это стандартное расширение файла, которое вы используете при записи TypeScript. Он будет скомпилирован для JavaScript.

Ответ 2

Все, что разрешено в файле *.d.ts, также может отображаться в файле *.ts, но не в обратном порядке. Таким образом, *.d.ts допускает подмножество TypeScript.

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

Интерфейсы разрешены, потому что они полностью исчезают после компиляции.

Также перечислены Const enums (добавленные в 1.4), в отличие от обычных перечислений, которые генерируют объект на выходном JavaScript.

Классы верхнего уровня, переменные, модули и функции должны иметь префикс declare. Часто вы увидите верхний уровень declare module, а материал внутри него также является чистым объявлением:

declare module Something {
    var x;
}

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