reactjs - ¿Cómo agregar redux-persist a un proyecto de typescript?
Estoy intentando añadir redux-persist a mi proyecto de React (usando TypeScript). Pero tengo algunos problemas. La compilación falla con el siguiente error:
Could not find a declaration file for module 'redux-persist/lib/storage'. '.../WebstormProjects/catalog/node_modules/redux-persist/lib/storage/index.js' implicitly has an 'any' type.
Try `npm install @types/redux-persist` if it exists or add a new declaration (.d.ts) file containing `declare module 'redux-persist/lib/storage'
Instalé los siguientes paquetes: "@types/redux-persist": "^4.3.1" y "redux-persist": "^6.0.0".
Contenido de redux-persist/lib/storage:
declare module "redux-persist/es/storage" {
import { WebStorage } from "redux-persist/es/types";
const localStorage: WebStorage;
export default localStorage;
}
declare module "redux-persist/lib/storage" {
export * from "redux-persist/es/storage";
export { default } from "redux-persist/es/storage";
}
¿Qué hacer para resolver este problema?
Respuesta #1
Solución:
Agrega esta línea:
/// <reference types="redux-persist" />
a react-app-env.d.ts si estás usando create-react-app.
Explicación:
Directivas de triple barra en TypeScript son comentarios de una sola línea que contienen una sola etiqueta XML. El contenido del comentario se utiliza como directivas del compilador.
Estas directivas se utilizan para declarar una dependencia de un paquete, que podría ser tipo, lib, path, etc.
El proceso de resolver estos nombres de paquetes es similar al proceso de resolver nombres de módulos en una declaración de importación. Una forma fácil de pensar en las directivas triple-slash-reference-types es como un import para paquetes de declaración.
Por ejemplo, en el código anterior, incluir /// <reference types="redux-persist" /> en un archivo de declaración declara que este archivo utiliza nombres declarados en @types/node/redux-persist.d.ts; y por lo tanto, este paquete necesita ser incluido en la compilación junto con el archivo de declaración.
Lee más aquí.
