2015-03-22 6 views

ответ

30

файл определение машинописи (*.d.ts)

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

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

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

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

declare function displayMessage(message: string); 

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

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

машинопись файл (.ts)

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

+0

Я хочу улучшить ответ: если вы определяете ** файл с экспортированным интерфейсом ** (который не будет выводить никаких js), вы должны сделать ** записать его в файл '.d.ts' ** , Таким образом, он будет исключен компилятором при создании модулей. – Ciberman

12

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

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

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

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

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

declare module Something { 
    var x; 
} 

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