Я использую Typescript для веб-приложения, которое должно использовать полноэкранный API JavaScript. Полноэкранный API официально не поддерживается, поэтому вы должны использовать префиксы поставщиков. Здесь мой код, основанный на образце 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();
}
}
}
Однако в моей среде IDE (Visual Studio, но это произойдет где угодно), я получаю такие ошибки, как:
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'.
Конечно, Typescript не может знать, что эти функции существуют, но я также не хочу повторно объявлять документ как any
, чтобы избавиться от этих ошибок, потому что тогда я потеряю все подсказки другого типа.
Какое здесь решение? Как мне получить Typescript, чтобы перестать жаловаться, но сохранить как можно больше аннотаций типа?