J'utilise la bibliothèque Twilio.js sur mon application (pas Twilio Node) et il n'y a pas de module ni de typage pour cette bibliothèque disponible. Il n'y a qu'une variable globale Twilio
disponible que l'on peut utiliser.Comment créer des déclarations ambiantes pour la bibliothèque JS globale Twilio dans TypeScript?
La déclaration ambiante plus simple peut avoir pour éviter les erreurs dans l'EDI est la suivante:
declare const Twilio: any;
Mais je veux aller un peu plus loin et que j'ai lu manuel dactylographiée et quelques autres ressources . J'ai pris particulièrement l'attention au this link.
Et voici ce que j'ai jusqu'à présent:
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;
}
}
Cela fonctionne, mais il est juste un échantillon, ce n'est pas complète. À titre d'exemple, il suffit pour l'instant :)
Mais ma question est triple:
- Compte tenu court exemple ci-dessus, voulez-vous faire quelque chose différemment?
- Si je supprime le mot-clé
export
de toutes les interfaces, cela fonctionne toujours. Devrais-je encore le laisser? Qu'est ce que ça fait? Compte tenu de l'utilisation
Twilio.Device.ready(this.handleTwilioDeviceReady.bind(this));
, IDEs me donner ce qui suit en vol stationnaire ma souris sur:Twilio
:const Twilio: Twilio.Base
Twilio.Device
:(property) Twilio.Base.Device: Twilio.Device
Twilio.Device.ready
:(method) Twilio.Device.ready(handler: Twilio.DeviceCallback): void
Comment puis-je se débarrasser de
Twilio.Base
apparaissant dans l'IDE et à la place s comment:Twilio
:const Twilio: Twilio
Twilio.Device
:(property) Twilio.Device: Twilio.Device
on dirait qu'il ya une définition de type pour Twilio disponible '@ types/twilio' via NPM: https://www.npmjs.com/package/@types/twilio – Seamus
@Couture C'est pour [Twilio Node.js helper library] (https://twilio.github.io/twilio-node/), pas pour celui que j'utilise. J'ai oublié de lier cela ... –
Juste fyi, 'Twilio.Device.ready (() => this.handleTwilioDeviceReady());' serait plus typé TypeScript :) – JKillian