Я видел, что эта ошибка в блоке кода ниже вызывает проблемы у разработчиков, которые только начинают работать с TypeScript. Я покажу вам, как решить эту ошибку.

const { token } = useParams();
Войти в полноэкранный режим

Выйти из полноэкранного режима

Во-первых, вам нужно знать, что машинописный текст не может деструктурировать общие простые объекты, такие как {} что означает, что useParams() является универсальным. Может быть, вы также пытались использовать этот блок кода ниже:

const { token } = useParams() as any
Войти в полноэкранный режим

Выйти из полноэкранного режима

Блок кода выше очень неверен, потому что any не может быть просто брошен в этом случае. Ключевое слово any следует использовать только тогда, когда объект может быть любого типа, в нашем случае здесь мы знаем свойства и тип нашего объекта, поэтому any не следует использовать в этом сценарии.

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

Теперь вам может быть интересно; каково наилучшее возможное решение. Вам нужно указать TypeScript значение универсального. Скажем, значением нашего дженерика является строка. Тогда пишем так:

const { token } = useParams<{token?: string}>()
Войти в полноэкранный режим

Выйти из полноэкранного режима

Из приведенного выше кода мы просто сообщаем TypeScript, что значение нашего токена является либо строкой, либо неопределенным. ? в нашем коде является необязательным оператором цепочки операций в TypeScript. К настоящему времени ваша ошибка должна быть решена, а сомнения развеяны.