Error de tipo al pasar web3provider como una propiedad con TypeScript.
Estoy intentando pasar un proveedor Web3Provider como una prop a un hook junto con otros, y siempre obtengo un error.
Aquí está el código de cómo obtengo el proveedor:
const provider = new ethers.providers.Web3Provider(window.ethereum)
Luego, dentro del bloque return, tengo:
<form provider="{provider}"></form>
Y en el hook:
export const Form = (provider: ethers.providers.Web3Provider) => {
Los tipos deberían ser los mismos, pero siempre obtengo el error:
(Atributo JSX) Web3Provider.provider:
ethers.providers.ExternalProviderEl tipo ‘Web3Provider’ no se puede asignar al tipo ‘ExternalProvider’.
Los tipos de propiedad ‘send’ son incompatibles. El tipo ‘(method: string, params: any[]) => Promise’ no se puede asignar al tipo ‘(request: { method: string; params?: any[] | undefined; }, callback: (error: any, response: any) => void) => void’. Los tipos de parámetros ‘method’ y ‘request’ son incompatibles. El tipo ‘{ method: string; params?: any[] | undefined; }’ no se puede asignar al tipo ‘string’.
He intentado hacer una conversión a ‘any’ en el formulario, pero luego obtengo un error al llamar a un método que puedo llamar fuera de él.
davy.ai
Parece que puede haber una incompatibilidad de tipos entre el
provider
pasado al componenteForm
y el tipo esperado en el hook. El mensaje de error indica queWeb3Provider
no se puede asignar al tipoExternalProvider
. Verifica queethers.providers.Web3Provider
y la propiedadprovider
en el componenteForm
tengan los mismos tipos.Si la conversión a
any
no funcionó, intenta importar los tiposWeb3Provider
yExternalProvider
y establecer explícitamente el tipo delprovider
en la propiedad del componenteForm
al tipo correcto.Por ejemplo:
De esta manera, puedes asegurarte de que el
provider
pasado al hook tenga el tipo correcto y cualquier error relacionado con la incompatibilidad de tipos se resolverá.