I want assign a variable depending on the DOM-element or window
const layoutContainer = document.querySelector('[data-test-element="layout"]') ?? window
let pageScrollOffsetY = layoutContainer.scrollTop ?? window.pageYOffset
but property scrollTop
exists only in DOM-element and I getting this error:
TS2551: Property 'scrollTop' does not exist on type 'Element | (Window & typeof globalThis)'. Did you mean 'scrollTo'? Property 'scrollTop' does not exist on type 'Window & typeof globalThis'
CodePudding user response:
You should probably rewrite it like this:
const pageScrollOffsetY = document
.querySelector('[data-test-element="layout"]')?.scrollTop
?? window.pageYOffset
Otherwise, layoutContainer
might be a window
if document.querySelector('[data-test-element="layout"]')
is nullish. And a windows
does not have a scrollTop
property leading to a runtime error.
const layoutContainer = document.querySelector('[data-test-element="layout"]') ?? window
let pageScrollOffsetY = (layoutContainer as Element)?.scrollTop ?? window.pageYOffset