Ich habe einige Probleme mit der Deklaration des Redux-Aktionstyps. Per Definition sollte die Redux Action type
Eigenschaft haben und könnte einige andere Eigenschaften haben.Wie TypeScript-Objektschnittstelle deklariert wird, die genaue Felder und zusätzliche Eigenschaften hat
Nach Typoskript interfaces page in HandBook (siehe "Excess Property Checks") i es so tun könnte:
interface IReduxAction {
type: string;
[propName: string]: any;
}
Und so scheint es in einigen Situationen zu arbeiten (wie Deklaration einer Variablen)
const action: IReduxAction = {
type: 'hello',
value: 'world'
};
Aber wenn ich versuche, Funktion zu deklarieren, die die Aktion verwendet:
function hello(state = {}, action: IReduxAction) {
return { type: action.type, text: action.text };
}
Es schlägt fehl mit der Meldung "Die Eigenschaft text
existiert nicht am Typ IReduxAction
".
Was mache ich falsch? Wie deklariert man den allgemeinen Aktionstyp?
Live-Beispiel auf Typoskript Spielplatz ist here
P. S. Ich überprüfte "ähnliche" Fragen, wie Why am I getting an error "Object literal may only specify known properties"?, und habe die Lösung dort nicht gefunden ...
Ich lese diesen Abschnitt auch. Und mit deinen Änderungen funktioniert es gut. Das Problem ist - ich möchte hier nicht Punkt-Notation verwenden. Seine normale JavaScript-Notation und es sollte möglich sein, dass es irgendwie funktioniert ... Die Frage ist - wie? – ValeriiVasin
Soweit ich weiß, können Sie nicht, so unterscheidet Typoskript zwischen bekannten Feldern und indexierbaren. –