createAction() 中的 Ngrx props<>() 方法

问题描述 投票:0回答:1

我想问一下,我们是否可以在 props<>() 中给出任何默认值,就像我们在函数参数中给出默认值一样

export const set = createAction(
    '[Counter] Set',
    props<{ value: number }>()
);

这里我想给 props 中的“value”属性一个默认的数字<{ value: number }>()。

有什么办法可以做到吗?

我尝试添加类似于我们在函数参数中所做的数字:

export const set = createAction(
    '[Counter] Set',
    props<{ value = 0 }>()
);

但是导致了错误!:

Operator '<' cannot be applied to types '<P extends SafeProps, SafeProps = NotAllowedInPropsCheck<P>>() => ActionCreatorProps<P>' and '{ value: number; }'
javascript angular ngrx ngrx-store
1个回答
0
投票

props<{ value: number }>()
它是泛型,而不是嵌入式 DSL。

您会收到该错误,因为

{ value = 0 }
不是有效类型。
{ value: 0 }
是,但这意味着
value
始终是
0

如果您想表示有默认值,请使用

props<{ value?: number }>()
props<{ value?: number|0 }>()

然后在你的减速器中你可以有类似的东西:

export const myReducer = createReducer(
  initialState,
  // [...]
  on(set, (state, { value = 0 } = {}) => { /* [...] */ }),
  // [...]
)
© www.soinside.com 2019 - 2024. All rights reserved.