TypeScript:在IE中未定义控制台

时间:2012-10-23 16:38:59

标签: typescript

对于JavaScript,我发现以下Internet Explorer解决方案能够在不触及F12的情况下处理console.log。 'console' is undefined error for Internet Explorer

然而,当我在Typescript中使用以下行时,我无法编译。

if (!console) console = {log: function() {}};

有什么想法吗?

4 个答案:

答案 0 :(得分:4)

您收到错误,因为您编写的对象文字与常规console的成员不同。最简单的修复只是将类型断言为any

if (!console) console = <any>{log: function() {}};

显然,除了console之外,你不需要在log之外拨打任何电话。

答案 1 :(得分:3)

我发现处理这个问题的最简单方法是抽象控制台......

class Logger {
    static log(message: string) {
        if (typeof window.console !== 'undefined') {
            window.console.log(message);
        }
    }
}

Logger.log("Works with the console and doesn't ever error");

这也开辟了其他可能性,例如使用消息窗口处理无控制台方案,或者将错误记录到服务器或您可能想要执行的任何其他操作以及登录到控制台 - 这也使得更容易在无窗口环境中运行代码!

答案 2 :(得分:0)

看一下console.js。它处理所有浏览器中的控制台日志记录等。要使用typescript进行编译,您需要在console.d.ts模块定义中定义console.log,然后在使用console.log的任何地方引用d.ts文件。

答案 3 :(得分:0)

在全局上下文中,唯一对未定义变量有效的运算符是typeof。所以我推荐以下代码片段:

if (typeof console == "undefined" || typeof console.log == "undefined") 
    console = <any>{ log: function () { } };