2016-11-11 53 views
0

存在,我得到這個方法:打字稿 - 物業「scrollY」不上鍵入「HTML元素」

class Foo { 
    private getDistanceFromTop (el: HTMLElement): number { 
     return el.scrollY || el.scrollTop; 
    } 
} 

el參數是動態的,可以是HTMLElementwindow對象。我試圖使用as將其轉換爲Window類型,但出現另一個編譯錯誤:Type 'HTMLElement' cannot be converted to type 'Window'。那麼,如何修改此代碼以使其通過TS驗證並且不使用:any類型?

回答

2

HTML元素和Window兩種不同的類型,所以你可以做這樣的事情:

class Foo { 
    private getDistanceFromTop(el: HTMLElement | Window) { 
    if (el instanceof Window) { 
     return el.scrollY; 
    } 
    return el.scrollTop; 
    } 
}