redux - ngrx 中的参数化选择器的类型未知
问题描述
我有一家ngrx/entity
商店,我想使用参数选择所有实体并将其绘制在表格中。
我做了以下选择器
export const selectByAdvertiserId = () =>
createSelector(selectAllUsers, (users: Array<EntityUser>, props: { advertiserId: string }) =>
users.filter((u) => u.advertiserId === props.advertiserId)
)
并像这样使用它
connect() {
return this.store.pipe(
select(selectByAdvertiserId(), { advertiserId: this.advertiser?.id }),
map((res) => res || [])
)
}
问题是 connect 应该返回 a并且编译时Observable<EntityUser[]>
的当前实现只返回以下错误:
'AdvertisersUsersListComponent' 类型中的属性 'connect' 不能分配给基本类型 'DataSource' 中的相同属性。类型 '() => Observable' 不可分配给类型 '(collectionViewer: CollectionViewer) => Observable<EntityUser[] | 只读实体用户[]>'。类型 'Observable' 不可分配给类型 'Observable<EntityUser[] | 只读实体用户[]>'。类型 'unknown' 不可分配给类型 'EntityUser[] | 只读实体用户 []'。类型“未知”不可分配给类型“只读 EntityUser[]”。
但我不明白什么是未知类型
我改为
export const selectByAdvertiserId2 = createSelector(
selectAllUsers,
(users) => (advertiserId: string) => users.filter((u) => u.advertiserId === advertiserId)
)
connect() {
return this.store.pipe(
select(selectByAdvertiserId),
map((res) => res(this.advertiser?.id || '') || [])
)
}
这有正确的类型,买我不喜欢它是一个返回的函数的事实。我将如何解决我的案例 1 ?
解决方案
推荐阅读
- python-3.x - 会话图为空。在调用 run() 之前向图中添加操作。[tf2]
- c# - 打开 PDF 文件,在任何 subfolder_filename 中是一个数字(用户知道)+ _v + 数字形式 1.999
- reactjs - ReactNode 中缺少历史定义
- python - Pandas 尽可能将混合类型的列值转换为数字
- angular - 如何为用户登录数据创建存根数据
- python - 使用多线程时如何正确处理此错误
- javascript - 如何在Angular中用空项目填充数组
- c# - Editorconfig:如何获取所有使用 `public` 的警告
- html - 如何在 Vue 中通过 v-for 生成列表
- javascript - 在 MongoDB 中,如何一次检索一个集合中的所有文档?