Простой пример построения и применения файла .d.ts?

Я читаю эту документацию, пытаясь понять назначение файлов TypeScript .d.ts или файлов объявлений:

При использовании внешней библиотеки JavaScript или нового хост-API вам потребуется использовать файл объявления (.d.ts), чтобы описать форму этой библиотеки.

Может кто-нибудь привести простой пример того, что это значит и как его применять? Документ делает это, но кажется, что есть более простой способ объяснить это. Например, если бы я хотел использовать moment.js с TypeScript, мне бы понадобился следующий файл momentjs.d.ts...

Но зачем мне файл? Другими словами, почему я не могу просто импортировать и использовать momentjs без файла *.d.ts?


person Ole    schedule 02.09.2016    source источник


Ответы (1)


В частности, на данный момент вам просто нужно запустить typings install --global dt~moment («установить файл глобального объявления момента из источника, определенно типизированного»).

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

Самый простой файл объявления будет выглядеть примерно так:

custom-typings/moment.d.ts

declare module 'moment'

Это позволит вам использовать библиотеку moment везде, где вы хотите, но у вас не будет сочного автозаполнения или проверки типов, доступных для любой из функций этой библиотеки. Однако проверка типов для внешнего модуля чрезвычайно полезна, так как вы, вероятно, не очень хорошо знакомы с API по сравнению с кодом, который вы написали сами.

person Pelle Jacobs    schedule 02.09.2016
comment
Спасибо - это немного помогло - я действительно ищу простой пример того, что файл делает для меня. Другими словами, простой сценарий с несколькими строками кода, пытающимися использовать что-то простое, например, momentjs, и если у меня нет файла .d.ts, то это происходит, ... и если я создаю файл .d.ts с этими строками в нем, то больше ничего не происходит... - person Ole; 02.09.2016
comment
Я немного обновил свой ответ, чтобы ответить на ваше обновление. Вам это помогает? - person Pelle Jacobs; 02.09.2016