【问题标题】:adding event handler to applicationCache leads to compile error将事件处理程序添加到 applicationCache 会导致编译错误
【发布时间】:2014-03-27 14:53:33
【问题描述】:

如果我将此行添加到我的代码中

if (window.applicationCache) {
    applicationCache.addEventListener('updateready',
        window.location.reload);
}

我收到这个奇怪的错误:

/home/matej/archiv/2014/projekty/zalmy/zalmy.ts(58,22): error TS2082:
 Supplied parameters do not match any signature of call target:
    Could not apply type '"downloading"' to argument 1 which is
    of type 'string'.
/home/matej/archiv/2014/projekty/zalmy/zalmy.ts(58,22): error TS2087:
    Could not select overload for 'call' expression.
make: *** [zalmy.js] Error 1

发生了什么事?它是 tsc 中的错误吗? (使用最新的打字稿 0.9.5)。

【问题讨论】:

    标签: javascript html typescript application-cache


    【解决方案1】:

    将其封装在一个函数中:

    if (window.applicationCache) {
        applicationCache.addEventListener('updateready', () => {
            window.location.reload();
        });
    }
    

    原因是事件监听器(ev:Event) 的参数不同于reload 的可选参数(布尔值)

    【讨论】:

    • 你显然是对的,但这让我觉得严格类型的语言存在严重的限制。一个人必须做这样不雅的废话。嗯。
    • @mcepl 如果没有 TS,您实际上是在调用 location.reload 为 true (事件对象是真实的)并使您的缓存无效。这是故意的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多