3

对于 JavaScript,我发现以下 Internet Explorer 解决方案能够在不按 F12 的情况下处理 console.log。 “控制台”是 Internet Explorer 的未定义错误

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

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

有任何想法吗?

4

4 回答 4

4

您收到一个错误,因为您编写的对象文字没有与常规的所有相同的成员console。最简单的解决方法是将类型断言为any

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

显然,您不需要取消consolelog.

于 2012-10-23T16:42:58.303 回答
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");

这也开辟了其他可能性,例如使用消息窗口处理无控制台场景,或将错误记录到您的服务器或您可能想要在记录到控制台之外执行的任何其他操作 - 它还可以更轻松地运行您的代码在无窗口的情况下!

于 2012-10-23T22:22:45.530 回答
0

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

于 2012-10-24T09:52:48.240 回答
0

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

if (typeof console == "undefined" || typeof console.log == "undefined") 
    console = <any>{ log: function () { } };
于 2014-02-22T05:23:30.660 回答