TypeScript版本: 3.9.2
搜索词: HTMLFormControlsCollection RadioNodeList namedItem
代码
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'
}
预期行为: 根据 MDN,namedItem()
在 HTMLFormControlsCollection
上只返回一组特定的元素类型。
HTMLFormControlsCollection
应该继承自HTMLCollectionOf<HTMLButtonElement | HTMLFieldSetElement | HTMLInputElement | HTMLObjectElement | HTMLOutputElement | HTMLSelectElement | HTMLTextAreaElement>
HTMLFormControlsCollection.namedItem()
应该返回RadioNodeList | HTMLButtonElement | HTMLFieldSetElement | HTMLInputElement | HTMLObjectElement | HTMLOutputElement | HTMLSelectElement | HTMLTextAreaElement | null
RadioNodeList
应该继承自NodeListOf<HTMLButtonElement | HTMLFieldSetElement | HTMLInputElement | HTMLObjectElement | HTMLOutputElement | HTMLSelectElement | HTMLTextAreaElement>
实际行为:HTMLFormControlsCollection.namedItem()
的返回类型不够具体(Element
)。
** playground链接:**https://www.typescriptlang.org/play/?ssl=7&ssc=2&pln=1&pc=1#code/CYUwxgNghgTiAEYD2A7AzgF3gMyTAtgFzwASAKgLIAyAYnvgKIQj4goYDcAUF8uliGat28ALw56AOkEs2GNJJRRWwAJIYWACgDkuJNoCUPAJbZ4mmcKwAya-ACEFoXPjH+UFGBBIzAJSjAxkgAckigVMaYBgbwAN5c8IioaEjMkhBIAOY6ILnaADTwlnKSAG5QEACuIEYAvlxAA
相关问题:#19437
3条答案
按热度按时间gupuwyp21#
HTMLFormControlsCollection
can also contain form-associated custom elements.eni9jsuy2#
我不确定这是否可行。我们可能会得到 custom form controls 。
也许这些类型可以在接口中声明,该接口可以被增强,例如
HTMLElementTagNameMap
。bzzcjhmw3#
解决这个问题。当我尝试访问表单元素的
value
属性时,HTMLFormElement
定义在我的代码中引起了错误的错误。