В машинописном тексте все, что не имеет явного типа (о котором компилятор не может сделать никаких выводов), получает тип any
. Это не обязательно ошибка - иногда вещи трудно описать, или они могут иметь законное значение any
(например, результат оператора fetch
). В этих ситуациях вам нужно отметить тип как , а именно any
. Примечание: я думаю, вы можете отключить это поведение, чтобы неявные any
были действительными (вы не должны этого делать - в противном случае просто используйте javascript)
Что касается того, почему исправление сработало: вы дали currentCustomer
вид. В частности, это тип:
{
nativeEvent: {
text: React.SetStateAction<string>
}
}
Таким образом, любое значение, которое соответствует указанной структуре c, может быть параметром этой функции. Альтернативный вариант - просто указать any
явным образом. Этот код примерно:
const customerInputHandler = (currentCustomer: any) => {
setCustomer(currentCustomer.nativeEvent.text);
};
, хотя отказ от ответственности: я на самом деле не тестировал это. Опять же, вы захотите по возможности избегать any
, поскольку он быстро распространяется по всему приложению, делая много спорных машинописных текстов. вы можете включить в свой проект, что может дать вам сокращение для указанного выше типа.