typescript - Hur man programmeringsmässigt ändrar ljudutgångsenheten i Angular inuti Electron?
Jag utvecklar en skrivbordsapp med Angular 11 och Electron 12. Appen måste kunna spela upp ljud och användaren måste ha möjlighet att ändra den ljudutgångsenhet som används av appen.
Så, jag försökte använda WebRTC-experimentfunktionen setSinkId. Electron använder Chromium, som stöder denna funktion. Så, i Electron webPreferences aktiverade jag experimentalFeatures.
Nu är problemet att Typescript (v4.2.3) inte känner igen setSinkId-funktionen.
Jag försökte göra detta inne i en Angular-komponent:
Men som du kan se, får jag detta felmeddelande:
Jag vet, förmodligen stödjer inte Typescript den här funktionen än. Men hur kan jag då byta ljudutgångsenhet i Angular inuti Electron?
Svar #1
Speciellt när man utvecklar en app för Electron är TypeScripts standardtyper inte särskilt hjälpsamma här. setSinkId() stöds i Chromium och är därför också tillgängligt i Electron.
Du kan hjälpa TypeScript lite genom att uttryckligen lägga till typdefinitionen för setSinkId().
const audio = <HTMLAudioElement & { setSinkId (deviceId: string): void }> new Audio();
audio.setSinkId('the-id-of-the-device');

