Wie schreibe ich Redux-Aktionen und Redux-Reduzierungen in TypeScript?

Was ist der beste Weg, um das @ zu besetzaction Parameter in einem Redux Reduzierer mit Maschinenschrift? Es können mehrere Aktionsschnittstellen auftreten, die alle eine Basisschnittstelle mit einem Eigenschaftstyp erweitern. Die erweiterten Aktionsschnittstellen können mehrere Eigenschaften aufweisen, die sich alle von den Aktionsschnittstellen unterscheiden. Hier ist ein Beispiel unten:

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         
    }
}

Das Problem ist, dassaction muss als Typ umgewandelt werden, der Zugriff auf beide hatIActionA undIActionB so kann der Reduzierer beide verwendenaction.a undaction.a ohne einen Fehler zu werfen.

Ich habe verschiedene Ideen, um dieses Problem zu umgehen:

Besetzungaction zuany.Verwenden Sie optionale Schnittstellenelemente.

Beispiel

interface IAction {
    type: string
    a?: string
    b?: string
}
Verwenden Sie für jeden Aktionstyp unterschiedliche Reduzierungen.

Was ist der beste Weg, um Aktionen / Reduzierungen in Maschinenschrift zu organisieren? Danke im Voraus

Antworten auf die Frage(36)

Ihre Antwort auf die Frage