私は、次のしているtypescriptですコード:抑制活字体の警告
private addBrowserNameAsCssClassToHtmlTag(): void {
var rootElement = angular.element(document.querySelector("html"));
if (this.isOpera()) {
rootElement.addClass("opera-browser");
} else if (this.isFirefox()) {
rootElement.addClass("firefox-browser");
} else if (this.isSafari()) {
rootElement.addClass("safari-browser");
} else if (this.isIE()) {
rootElement.addClass("ie-browser");
} else if (this.isChrome()) {
rootElement.addClass("chrome-browser");
}
}
private isOpera(): boolean {
return (!!(<any>window).opr && !!(<any>opr).addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
}
private isFirefox(): boolean {
//noinspection TypeScriptUnresolvedVariable
return typeof InstallTrigger !== 'undefined';
}
private isSafari(): boolean {
return /constructor/i.test(window.HTMLElement) || ((p): boolean => {
return p.toString() === "[object SafariRemoteNotification]";
})(!window['safari'] || safari.pushNotification);
}
private isIE(): boolean {
return /*@[email protected]*/false || !!window.document.documentMode;
}
private isChrome(): boolean {
return !!window.chrome && !!window.chrome.webstore;
}
コードが正常に動作しますが、問題は、それが時間のコンパイルエラーを発生させることである:
error TS2304: Cannot find name 'opr'.
error TS2339: Property 'opera' does not exist on type 'Window'.
error TS2304: Cannot find name 'InstallTrigger'.
error TS2339: Property 'HTMLElement' does not exist on type 'Window'.
error TS2304: Cannot find name 'safari'.
error TS2339: Property 'documentMode' does not exist on type 'Document'.
error TS2339: Property 'chrome' does not exist on type 'Window'.
error TS2339: Property 'chrome' does not exist on type 'Window'.
私は無地に書いた場合はjavascriptの私ではありません何か問題があります。このコード部分に関するコンパイラの警告を抑制するにはどうすればよいですか?それとも私が知りません良い解決策がありますか?
はIMOそれはWindow'または '' Document'の定義を変更するのは良い考えではありません。これらの余分なメンバーはここでは使用されません。ブラウザがどれであるかを判断するためにチェックされます。大括弧表記の汚れたトリックは、ここでより適合しています。 – Paleo
私は大括弧表記のオプション1がここでは最高だということに同意します。利用可能な2つのオプションを実証したかっただけです。 –