Почему, когда мы указываем такой тип он выдает ошибку
ChangeEvent<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>
А при
ChangeEvent<HTMLInputElement>
работает
function handleChange(event: ChangeEvent<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>) {
const { name } = event.target
const value = event.target.checked
setData(data => ({...data, [name]: value}))
}
Property 'checked' does not exist on type 'EventTarget & (HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement)'.
Property 'checked' does not exist on type 'EventTarget & HTMLSelectElement'
По логике мы же говорим, что или, или у нас тип.
В какой момент и по какой логике TS начинает считать это ошибкой?
Почему это условие убирает ошибку?
if(event.target instanceof HTMLInputElement) value = event.target.checked
Ведь это всего лишь условие, а не заданный тип в аргументе нашему
event