Estoy convirtiendo un gancho que usé recientemente en TypeScript y obtengo el siguiente error
(alias) const axios: AxiosStatic import axios Element implicitly has an 'any' type because type 'AxiosStatic' has no index signature. Did you mean to call 'axios.get'?ts(7052)Que se genera a partir del siguiente código.
const fetchData = async () => { axios[method](url, data, config) .then((res) => { setResponse(res.data); }) .catch((err) => { setError(err); }) .finally(() => { setloading(false); }); };Creo específicamente que está relacionado con axios [método]
Estaba usando esto anteriormente para poder pasar varios tipos de solicitudes dinámicamente. No estoy seguro de cómo resolver el error anterior utilizando las mejores prácticas de mecanografiado.
Estos valores se recuperan de lo siguiente en el siguiente
({ url, method, data })PD: Soy consciente de que puede haber otros problemas en el fragmento, pero los resolveré ya que solo están relacionados con los tipos.
Se queja porque el method podría ser cualquier cadena y no una clave de axios . Puede solucionar esto haciendo que su tipo sea una clave de axios .
Primero, una unión de todos los métodos que admite axios:
type Methods = "head" | "options" | "put" | "post" | "patch" | "delete" | "get"; Entonces, si se trata de una función, podemos hacer que el parámetro escriba Methods :
function foo(method: Methods) { axios[method] // works // ... }O si es una variable:
let method: Method = ...;Es posible que también necesite usar un yeso:
let method = ... as Method;