TS7006: Параметр «__» неявно имеет тип «любой». Я не могу понять ошибку и решение ниже - PullRequest
1 голос
/ 19 июня 2020

Сначала мой код выглядел так:

  const customerInputHandler = (currentCustomer) => {
    setCustomer(currentCustomer.nativeEvent.text);
  };

И после поиска inte rnet я нашел решение и реализовал этот код ниже. Я ищу вокруг, пытаясь понять этот код, но не могу. Не могли бы некоторые объяснить ошибку, которую я имел выше, и объяснить, почему это решение все исправило

const customerInputHandler = (currentCustomer: {
     nativeEvent: {text: React.SetStateAction<string>};
  }) => {
    setCustomer(currentCustomer.nativeEvent.text);
};

1 Ответ

3 голосов
/ 19 июня 2020

В машинописном тексте все, что не имеет явного типа (о котором компилятор не может сделать никаких выводов), получает тип any. Это не обязательно ошибка - иногда вещи трудно описать, или они могут иметь законное значение any (например, результат оператора fetch). В этих ситуациях вам нужно отметить тип как , а именно any. Примечание: я думаю, вы можете отключить это поведение, чтобы неявные any были действительными (вы не должны этого делать - в противном случае просто используйте javascript)

Что касается того, почему исправление сработало: вы дали currentCustomer вид. В частности, это тип:

{
 nativeEvent: {
  text: React.SetStateAction<string>
 }
}

Таким образом, любое значение, которое соответствует указанной структуре c, может быть параметром этой функции. Альтернативный вариант - просто указать any явным образом. Этот код примерно:

const customerInputHandler = (currentCustomer: any) => {
    setCustomer(currentCustomer.nativeEvent.text);
};

, хотя отказ от ответственности: я на самом деле не тестировал это. Опять же, вы захотите по возможности избегать any, поскольку он быстро распространяется по всему приложению, делая много спорных машинописных текстов. вы можете включить в свой проект, что может дать вам сокращение для указанного выше типа.

...