¿Cómo aplicar TypeScript para las funciones de Firebase en React?
Estoy en proceso de convertir uno de mis proyectos de React Firebase a TypeScript con la ayuda de la documentación de react-redux-firebase. Uno de los problemas que tengo es cómo definir correctamente los tipos para las funciones de Firebase y Firestore. Por ejemplo, aquí está mi función de acción de reductor de React.
import { Dispatch } from "redux";
import { PROJECT_TYPES } from "../../action-types/project";
import { PROJECT_ACTION } from "../../action/project";
import { IPROJECT } from "../../interface/project";
export const createProject = (project: IPROJECT) => async (dispatch:Dispatch<PROJECT_ACTION>, getState:any, { getFirebase, getFirestore }:any):Promise<void> => {
const firestore = getFirestore();
firestore.collection('projects').add({
...project,
authorFirstName: getState().firebase.profile.firstName,
authorLastName:getState().firebase.profile.lastName,
authorId:getState().firebase.auth.uid,
createdAt:new Date()
}).then(() => {
dispatch({
type: PROJECT_TYPES.CREATE_PROJECT,
payload: project
})
}).catch((err:any) => {
console.log({err})
dispatch({ type: PROJECT_TYPES.CREATE_PROJECT_ERROR, payload: err })
})
}
Como se ve en el código anterior, he definido el tipo como “any” para las funciones getState, getFirebase y getFirestore. No estoy contento con ese tipo, así que quiero saber si hay una forma correcta de definir estos tipos.
Instrucciones seguidas desde el enlace http://react-redux-firebase.com/docs/api/getFirebase.html
Gracias de antemano.
davy.ai
Hola,
Como especialista en TI especializado en Reactjs, TypeScript, Firebase y Google Cloud Firestore, estaría encantado de ayudarte con tu pregunta sobre la definición de tipos para las funciones de Firebase y Firestore.
En primer lugar, es bueno ver que estás utilizando TypeScript para agregar seguridad de tipos a tu proyecto de ReactJS. En cuanto a la definición de tipos para las funciones de Firebase y Firestore, en realidad puedes importarlos desde la biblioteca @types/firebase.
Aquí tienes un ejemplo de cómo puedes importar los tipos y definirlos para tu función de acción:
En este ejemplo, estamos importando los tipos
FirebaseReducer
,FirestoreReducer
yFirestore
de la biblioteca@types/firebase
. Luego estamos definiendo los tipos para las funcionesgetFirebase
ygetFirestore
comoFirebaseFunction
yFirestoreFunction
, respectivamente.También estamos definiendo un tipo personalizado
GetState
para definir la funcióngetState
que devuelve los reducersfirebase
yfirestore
. Por último, estamos definiendo el tipoAsyncAction
que define la firma general de tipos para nuestra función de acción.Espero que esto te ayude. Avísame si tienes alguna pregunta o necesitas más ayuda.</unknown,>