Microsoft/TypeScript
View on GitHubHTMLFormControlsCollection namedItem should return only form input elements
Open
#39,003 opened on Jun 10, 2020
BugDomain: lib.d.tsHelp Wanted
Description
TypeScript Version: 3.9.2
Search Terms: HTMLFormControlsCollection RadioNodeList namedItem
Code
declare const form: HTMLFormElement;
const element = form.elements.namedItem('foo')
if (element && !(element instanceof RadioNodeList)) {
console.log('eee', element.value) // <<< Property 'value' does not exist on type 'Element'
}
Expected behavior: According to MDN, namedItem() on a HTMLFormControlsCollection only returns a specific set of element types.
HTMLFormControlsCollectionshould extendHTMLCollectionOf<HTMLButtonElement | HTMLFieldSetElement | HTMLInputElement | HTMLObjectElement | HTMLOutputElement | HTMLSelectElement | HTMLTextAreaElement>HTMLFormControlsCollection.namedItem()should returnRadioNodeList | HTMLButtonElement | HTMLFieldSetElement | HTMLInputElement | HTMLObjectElement | HTMLOutputElement | HTMLSelectElement | HTMLTextAreaElement | nullRadioNodeListshould extendNodeListOf<HTMLButtonElement | HTMLFieldSetElement | HTMLInputElement | HTMLObjectElement | HTMLOutputElement | HTMLSelectElement | HTMLTextAreaElement>
Actual behavior: HTMLFormControlsCollection.namedItem() return type is not specific enough (Element).
Related Issues: #19437