2014-02-25 41 views
0

添加事件處理程序applicationCache導致如果我這行添加到我的代碼</p> <pre><code>if (window.applicationCache) { applicationCache.addEventListener('updateready', window.location.reload); } </code></pre> <p>我得到這個奇怪的錯誤編譯錯誤

/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)。

回答

0

把它包起來的函數:

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

原因是,事件偵聽器(ev:Event)的說法是可選的參數不同的reload(布爾)

+0

顯然你是對的,但讓我覺得嚴格類型的語言有嚴格的限制。一個人必須做這樣的不雅之語。嗯。 – mcepl

+4

@mcepl沒有TS,你實際上是用true(事件對象是truthy)調用location.reload並使緩存無效。那是故意的嗎? – basarat

+1

嗯,不,你說得對。 – mcepl

相關問題