Wie bekomme ich Typoskript zu stoppen, beschweren sich über Funktionen, die es nicht kennen?
Ich bin mit Typoskript für eine web-app, muss die JavaScript-full-screen-API. Der full-screen-API nicht offiziell unterstützt, noch haben Sie zu verwenden vendor-Präfixe. Hier ist mein code basiert auf dem Beispiel aus MDN:
function toggleFullScreen(element: JQuery) {
var fs = element[0];
if (!document.fullscreenElement && //alternative standard method
!document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement) { //current working methods
if (fs.requestFullscreen) {
fs.requestFullscreen();
} else if (fs.msRequestFullscreen) {
fs.msRequestFullscreen();
} else if (fs.mozRequestFullScreen) {
fs.mozRequestFullScreen();
} else if (fs.webkitRequestFullscreen) {
fs.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
}
} else {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
}
}
Jedoch in meine IDE (Visual Studio, aber das hätte überall passieren), bekomme ich Fehler wie:
The property 'fullscreenElement' does not exist on value of type 'Document'.
The property 'mozFullScreenElement' does not exist on value of type 'Document'.
The property 'webkitFullscreenElement' does not exist on value of type 'Document'.
Natürlich Typoskript nicht wissen können, dass diese Funktionen vorhanden sind, aber noch will ich zu re-deklarieren-Dokument als any
nur, um loszuwerden, diese Fehler, weil ich Sie dann verlieren alle anderen geben Sie Hinweise.
Was ist hier die Lösung? Wie bekomme ich Typoskript zu stoppen beschweren, aber halten Sie so viele Arten von Anmerkungen, wie ich kann?
- Vielleicht erstellen Sie eine
.d.ts
- Datei? (Oder in diesem speziellen Fall, finden Sie jemand anderes bereits erstellt hat-und wenn nicht, teilen das man dir tut...)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vereinfachend könnte man hinzufügen, die Elemente, für die
Document
- Schnittstelle und der Fehler wäre Weg.Könnte man hinzufügen, full-Typ-Informationen für jeden dieser, selbst das einfache:
Dies würde verhindern, dass Sie falsch verwendet.
Für statische Eigenschaften, Sie können einfach zu machen, der Typ dynamic, der wichtige Teil in dem unteren Beispiel ist der Typ assertion auf
Element
, d.h.(<any>Element)
:Ich habe das gleiche problem. Nur 'Eckige Klammer' notation, um es zu lösen.
Steve fenton Antwort ist hervorragend und auf lange Sicht das ist, was Sie sollte tun. Denken Sie daran-Typen sind Dokumentation und helfen dem nächsten Entwickler.
Schlecht, aber beweisen, dass Maschinenschrift, permissive, wenn Sie wollen, dass es
Rein als Gedankenexperiment, die Sie erstellen können eine lokale variable in den Schatten der globalen und explizit geben Sie es zu alle nur einmal:
Und für mehr Phantasie und diejenigen (greifen von einem äußeren Umfang):
Komplettes Beispiel:
Dies wird nicht empfohlen, aber eine andere Lösung zum stoppen der compiler meckert: