В чем разница между *.d.ts и *.ts в машинописном тексте?

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


person Nur Rony    schedule 22.03.2015    source источник
comment
inshort- .d.ts файлы являются мостом между .ts и .js файлами. .ts файлы узнают о типах в .js файлах, как только они будут объявлены в .d.ts файлах, и компилятор будет проинформирован об этих .d.ts файлах.   -  person Paramvir Singh Karwal    schedule 30.12.2019


Ответы (2)


Файл декларации TypeScript (*.d.ts)

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

Например, предположим, что у меня есть следующий код JavaScript в файле где-то за рамками того, что известно компилятору TypeScript:

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.

person David Sherret    schedule 22.03.2015
comment
Я хочу улучшить ответ: если вы определяете файл с экспортированным интерфейсом (который не будет выводить никаких js), вам следует записать его в .d.ts файл. Таким образом, он будет исключен компилятором при создании модулей. - person Ciberman; 24.12.2017

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

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

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

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

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

declare module Something {
    var x;
}

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

person Daniel Earwicker    schedule 22.03.2015