Представьте себе функцию, подпись которой выглядит следующим образом:
function readElement(element: HTMLElement): string;
Чтобы реализовать функцию, вам нужно проверить, использует ли элемент свойство value
(т.е. HTMLInputElement
) или свойство textContent
(т.е. SpanElement
) и получить соответствующее свойство. То, что я спрашиваю, - это пара способов, которые могут реализовать readElement
, надежны и имеют высокую совместимость с браузером.
Вот список способов, которые я использовал для решения этой проблемы в прошлом:
element.value !== undefined
element.constructor.hasOwnProperty("value")
typeof element.value === "string"
[HTMLInputElement, HTMLTextAreaElement,...].some(proto => element instanceof proto)