在我的角2我使用ngrx並有一些行動和減速器。動作例如:Typescript v2.2.2聯合類型使得錯誤(TS2339)
import { Action } from '@ngrx/store';
export const actionTypes = {
ACTION_1: type('Actions 1'),
ACTION_2: type('Actions 2'),
};
export class ActionOne implements Action {
public type = actionTypes.ACTION_1;
constructor(public payload: any) { }
}
export class ActionTwo implements Action {
public type = actionTypes.ACTION_2;
}
export type Actions
= ActionOne
| ActionTwo;
所以,有些動作具有有效載荷,其他 - 不,和Actions
是聯合類型,它可以是ActionOne
或ActionTwo
。但在我減速器我有一個錯誤:Property 'payload' does not exist on type 'Actions' Property 'payload' does not exist on type 'ActionTwo'.
減速是這樣的:
export function reducer(state = initialState, action: Actions): IState {
switch (action.type) {
case actions.actionTypes.ACTION_1: {
return Object.assign({}, state, {
data: action.payload,
});
}
case ...
}
}
我更新版本的打字原稿從2.0.3
到2.2.2
後得到這個錯誤。 那麼,有沒有方法可以修復錯誤,而無需將有效載荷應用於每個動作?這種情況可能是tsconfog.json
有一些選項嗎?
'type()'不是來自打字稿,它是用於ngrx的util函數 –
@qweasd檢查更新。 – kennytm