angular - Twilio Video med Typescript
Jag skapade en komponent med Angular 2 och Typescript som tillåter att skapa videosamtal med hjälp av biblioteket Twilio Video. Jag försöker skapa en anpassad typning för Typescript av biblioteket twilio-video, på det sätt som används i andra inlägg som:
declare var Twilio:any;
fungerade för mig endast när jag använde ett Twilio-klientbibliotek, men inte med Twilio Video.
interface Twilio {
//Other declarations here
Video: any;
}
declare namespace Twilio {
//Others interface here like Connection and Device from client library
interface Video {
connect(token: string, options?:Object): Promise;
createLocalTracks(options?:Object): Promise;
//Other declarations of methods
}
}
och slutligen kan deklarera:
declare var Twilio:Twilio;
Med dessa anpassade typarbete med ett videosamtal kan jag skapa ett rum och skapa lokala spår, men kan inte använda metoderna disable eller enable från LocalTrack. Jag granskade koden för biblioteket twilio-video och läste om att skapa anpassade typer och jag tror att biblioteket behöver använda en mall som visas här, något i stil med detta:
export as namespace Twilio;
export = Video;
declare class Video {
connect(token:string, options: Object): Promise;
createLocalTracks(options?: Object): Promise;
//Other declarations of functions of Video
}
declare namespace Video {
export interface LocalVideoTrack {
new(mediaStream:any, mediaStreamTrack:any, options:Object);
disable():void;
enable():void;
}
}
På det sättet kan användas som namespace Twilio, men man kan inte deklarera något med Twilio.Video som använd bibliotek, jag kan inte använda instanceof för att casta en variabel, och har ingen relation med bibliotekets kod.
Det primära problemet för mig är att jag inte kan deklarera en anpassad TypeScript-typ korrekt som använder alla funktioner som deklarerats i Twilio Video-biblioteket. Jag är ny på att använda TypeScript, bara sen några veckor sedan.