¿Cómo escribir acciones Redux y reductores Redux en TypeScript?
¿Cuál es la mejor manera de lanzar elaction
parámetro en un reduxreductor con mecanografiado? Habrá múltiples interfaces de acción que pueden ocurrir y todas extenderán una interfaz base con un tipo de propiedad. Las interfaces de acción extendidas pueden tener más propiedades que son diferentes entre las interfaces de acción. Aquí hay un ejemplo a continuación:
interface IAction {
type: string
}
interface IActionA extends IAction {
a: string
}
interface IActionB extends IAction {
b: string
}
const reducer = (action: IAction) {
switch (action.type) {
case 'a':
return console.info('action a: ', action.a) // property 'a' does not exists on type IAction
case 'b':
return console.info('action b: ', action.b) // property 'b' does not exists on type IAction
}
}
El problema es eseaction
necesita ser lanzado como un tipo que tiene acceso a ambosIActionA
yIActionB
para que el reductor pueda usar ambosaction.a
yaction.a
sin lanzar un error
Tengo varias ideas sobre cómo solucionar este problema:
Emitiraction
aany
.Utilice miembros de interfaz opcionales.ejemplo:
interface IAction {
type: string
a?: string
b?: string
}
Use diferentes reductores para cada tipo de acción.¿Cuál es la mejor manera de organizar Acción / Reductores en mecanografiado? ¡Gracias de antemano!