Я использую библиотеку Twilio.js в своем приложении (а не Twilio Node), и нет модуля и титров для этой библиотеки. Доступна только глобальная переменная Twilio
, которую можно использовать.Как создать эмбиентные объявления для Twilio глобальной JS-библиотеки в TypeScript?
Простейшим декларация окружающей среды можно иметь, чтобы избежать ошибок в IDE заключается в следующем:
declare const Twilio: any;
Но я хочу пойти немного дальше, и для этого я читал машинопись руководство и несколько других ресурсов , Я обратил особое внимание на this link.
А вот то, что я до сих пор:
declare const Twilio: Twilio.Base;
declare namespace Twilio {
export interface Base {
Device: Device;
}
export interface Device {
ready(handler: DeviceCallback): void;
}
export interface DeviceCallback {
(device: Device): void;
}
}
Это работает, но это всего лишь пример, это не полный. В качестве примера, достаточно сейчас :)
Но мой вопрос три раза:
- Учитывая короткий образец выше, вы бы сделать что-нибудь по-другому?
- Если я удалю ключевое слово
export
со всех интерфейсов, оно по-прежнему работает. Должен ли я оставить его? Что оно делает? Учитывая использование
Twilio.Device.ready(this.handleTwilioDeviceReady.bind(this));
, Иды дать мне следующее при наведении мышью над:Twilio
:const Twilio: Twilio.Base
Twilio.Device
:(property) Twilio.Base.Device: Twilio.Device
Twilio.Device.ready
:(method) Twilio.Device.ready(handler: Twilio.DeviceCallback): void
Как я могу избавиться от
Twilio.Base
, появляющегося в среде IDE, и вместо этого как:Twilio
:const Twilio: Twilio
Twilio.Device
:(property) Twilio.Device: Twilio.Device
Похоже, есть определение типа для Twilio доступны как '@ типы/twilio' через НПМ: https://www.npmjs.com/package/@types/twilio – Seamus
@Seam us Это для [Twilio Node.js вспомогательная библиотека] (https://twilio.github.io/twilio-node/), а не для той, которую я использую. Забыл связать это ... –
Просто fyi, 'Twilio.Device.ready (() => this.handleTwilioDeviceReady());' будет более идиоматичным TypeScript :) – JKillian