DOM typings
we will explore and set type for DOM method; such as document.querySelector() and document.querySelectorAll()
❌ below is not working
const radioInputList = document.querySelectorAll<RadioNodeList>('input[type=radio]');radioInputList.forEach((r) => (r.checked = r.defaultValue === 'X'));✅ but this works
const radioInputList = document.querySelectorAll<HTMLInputElement>('input[type=radio]');radioInputList.forEach((r) => (r.checked = r.defaultValue === 'X'));❌ but this will not work; adding typing ahead to variable
const radioInput: HTMLInputElement = document.querySelectorAll('input[type=radio]');✅ this works ( with as)
const radioInputList = document.querySelectorAll('input[type=radio]') as NodeListOf<HTMLInputElement>;radioInputList.forEach((r) => (r.checked = r.defaultValue === 'X'));❌ but this will not work ( type )
const radioInputList = document.querySelectorAll<NodeListOf<HTMLInputElement>('input[type=radio]');radioInputList.forEach((r) => (r.checked = r.defaultValue === 'X'));❌ neither this works (assign)
const radioInputList: NodeListOf<HTMLInputElement> = document.querySelectorAll('input[type=radio]');❎ below syntax are not working
const radioInputList: HTMLInputElement = document.querySelectorAll('input[type=radio]');const radioInputList: Element = document.querySelectorAll('input[type=radio]');const radioInputList: HTMLInputElement[] = document.querySelectorAll('input[type=radio]');const radioInputList: Element[] = document.querySelectorAll('input[type=radio]');✅ and here is separate type for both DOM method as per my approach
const video = document.querySelector<HTMLVideoElement>('video') // HTMLVideoElement | nullconst audios = document.querySelectorAll('audio') as NodeListOf<HTMLAudioElement>;Hope it helps.