¿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!

Respuestas a la pregunta(18)

Su respuesta a la pregunta