首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

获取错误类型'Observable<{}>‘不能分配给类型'Observable<User>’。当尝试使用@ngrx/store的store.select()

方法时,出现了这个错误。请问可能是什么原因导致的?如何解决这个问题?

这个错误是由于类型不匹配导致的。在使用@ngrx/store的store.select()方法时,我们期望返回的是Observable<User>类型的数据,但实际上返回的是Observable<{}>类型的数据,因此类型不匹配,导致编译错误。

解决这个问题的方法是确保store.select()方法返回的数据类型与期望的类型一致。可以通过以下几种方式解决:

  1. 检查数据源:首先,检查数据源,确保数据源返回的数据类型是正确的。可能是数据源返回的数据类型不正确导致了这个错误。
  2. 使用类型断言:如果确定数据源返回的数据类型是正确的,可以使用类型断言来告诉编译器数据的实际类型。例如,可以使用as关键字将Observable<{}>类型的数据断言为Observable<User>类型的数据:
  3. 使用类型断言:如果确定数据源返回的数据类型是正确的,可以使用类型断言来告诉编译器数据的实际类型。例如,可以使用as关键字将Observable<{}>类型的数据断言为Observable<User>类型的数据:
  4. 这样可以告诉编译器数据的实际类型是Observable<User>,从而解决类型不匹配的问题。
  5. 检查数据流:还可以检查数据流中是否存在其他操作导致了类型不匹配的问题。例如,在使用@ngrx/effects进行副作用处理时,可能会对数据进行转换或筛选操作,导致返回的数据类型与期望的类型不一致。
  6. 可以通过在store.select()方法之前添加tap操作符,打印出数据流中的数据类型,以便排查问题:
  7. 可以通过在store.select()方法之前添加tap操作符,打印出数据流中的数据类型,以便排查问题:
  8. 这样可以查看数据流中的数据类型,进一步分析问题所在。

总结起来,解决这个错误的关键是确保store.select()方法返回的数据类型与期望的类型一致。通过检查数据源、使用类型断言或检查数据流,可以找到并解决导致类型不匹配的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

一个Angular 5教程:一步一步指导实现你第一个Angular 5应用程序

对我而言,最好使用更智能编辑器vim,因为它会为代码中任何错误提供额外补充,因为TypeScript是强类型。...如果您是从头开始创建一个新组件,并忘记向NgModule添加一个新模块,但尝试将其添加到您标记中,那么您应用程序将无法使用JS控制台中下一个错误: Uncaught Error: Template...同时,Observable能够处理每一个事件,实际上有着无数“承诺”。我们可以通过在这个过程中得到一些错误或者通过退订Observable来解决这个问题。 这里是什么takeWhile?...我们可以使用诸如ngrx-store-localstorage之类东西来存储我们数据到浏览器localStore,但是如何使用API​​呢?...我们还需要case cards.ADD:从我们减速器中删除分支。让我们尝试一下: ? 出于某种原因,我们在卡片添加操作中获取重复数据。让我们试图找出原因。

42.6K10
  • angular4实战(4)ngrx

    如下: ngrx地址:https://github.com/ngrx ngrx主要有四个模块,分别是 ngrx/storengrx/effects, ngrx/router-store..., ngrx/store-devtools 本次实例用ngrx 4.x版本,因为没有跟路由关联,也没有复杂行为,只用到了ngrx/store。...同react-redux 相似,ngrx核心也是通过reducer来获取储存在store值(状态),通过action来改变store中值(状态)。...ChangeDetectionStrategy 组建变化检查策略,以上述代码为例,为ChangeDetectionStrategy设置OnPush时,组件就不会一直进行脏检查了,而是输入属性变化时...ps:这里边个人理解是因为每一个简单类型值,都会在新开栈上来存储,而对象不同,对象存在同一个指针引用(是否可以类似深浅拷贝,这里打个问号); 一篇国外文章帮助理解:https://blog.thoughtram.io

    1.1K30

    【MobX】390- MobX 入门教程(上)

    observable 值可以是 JS原始数据类型、引用类型、普通对象、类实例、数组和映射。...observable 使用 对于JS原始类型(Number/String/Boolean), 使用observable.box()方法设置: const num = observable.box(99)...知识点:computed setter computed setter 不能用来改变计算属性值,而是用来它里面的成员,来使得 computed 发生变化。...知识点:computed(expression) 函数 一般可以通过下面两种方法观察变化,并获取计算值: 方法1: 将 computed 作为函数调用,在返回对象使用 .get() 来获取计算的当前值...实际使用场景: 当我们没有获取到数据时候,没有必要去执行存缓存逻辑,第一次获取到数据以后,就执行存缓存逻辑。

    81620

    使用 React&Mobx 几个最佳实践

    当你把业务逻辑写在组件里面的时候,很难及时定位错误,因为业务逻辑分散在各种不同组件里面,让你很难来通过行为来定义到底是哪些代码涉及这个错误,不同组件复用这些逻辑也很困难。...使用 action 后,可以清楚看出哪些代码可以更改可观察变量,并且方便调试工具给出更多信息 使用 transaction 可以将多个应用状态(Observable)更新视为一次操作,并只触发一次监听者...class UserService { fetchUser = () => axios.get('/api/user') } class Store { @observable todos...需要追踪对象属性时、使用 map MobX 可以做许多事,但是它无法将原始类型值转变成 observable (尽管可以用对象来包装它们)。所以说值不是 observable,而对象属性才是。...或者换句话说: 永远只传递拥有 observable 属性对象。 如果你想追踪对象中每个属性变更,可以使用 map: observable.map(values?)

    1.4K10

    【MobX】MobX 简单入门教程

    observable 值可以是 JS原始数据类型、引用类型、普通对象、类实例、数组和映射。...observable 使用 对于JS原始类型(Number/String/Boolean), 使用observable.box()方法设置: const num = observable.box(99)...知识点:computed setter computed setter 不能用来改变计算属性值,而是用来它里面的成员,来使得 computed 发生变化。...知识点:computed(expression) 函数 一般可以通过下面两种方法观察变化,并获取计算值: 方法1: 将 computed 作为函数调用,在返回对象使用 .get() 来获取计算的当前值...实际使用场景: 当我们没有获取到数据时候,没有必要去执行存缓存逻辑,第一次获取到数据以后,就执行存缓存逻辑。

    1.5K00

    调试 RxJS 第2部分: 日志篇

    日志没什么可兴奋。 然而,日志是获取足够信息以开始推断问题直接方式,它不是靠猜,而且它通常用于调试 RxJS 代码。...在本文中,我将展示如何以一种不唐突方式来使用 rxjs-spy 获取详情和有针对性信息。 来看一个简单示例,示例中使用是 rxjs 和 rxjs-spy UMD bundles: ?...在组成 observable 之前,示例启用了侦察,并为匹配 /user-.+/ 正则表达式或标签名为 users observable 配置日志记录器。 示例输入看上去应该是这样: ?...调试时,我发现知道实际 subscribe 调用地点比知道位于组合 observable 中间 subscribe 调用地点更有用。 现在我们来看一个现实问题。...编写 redux-observable epics 或 ngrx effects 时,我见过一些开发者代码大概是这样: ? 乍看上去没什么问题,而且大多数情况下也能正常运行。

    1.2K40

    你想要——redux源码分析

    大家好,今天给大家带来是redux(v3.6.0)源码分析~首先是reduxgithub接下来我们看看redux在项目中简单使用,一般我们都从最简单开始入手哈备注:例子中结合是react进行使用...store实例,然后使用store方法render( , document.getElementById...*/ // 这个函数一般来说用不到,他是配合其他特点框架或编程思想来使用的如rx.js,感兴趣朋友可以自行学习 // 这里就不多做介绍 function observable() {.../utils/warning'// 获取UndefinedState错误信息function getUndefinedStateErrorMessage(key, action) { const actionType...创建一个store,并把它缓存起来 const store = createStore(reducer, preloadedState, enhancer) // 获取store中原始dispatch

    17510

    三十四、Hystrix目标方法执行逻辑源码解读:executeCommandAndObserve

    目标方法执行过程中发生错误会执行此函数,用于Resume恢复而不是立马停止线程:这边是触发fallback逻辑入口。...// 注意:进到这个回调里面来后,就是使用线程池资源去执行了(获取到了线程池资源) // 比如此处线程号就是:hystrix-fallbackDemoGroup-1 return...(); // store the command that is being run // 这个保存使用ThreadLocal...除此之外还需关心注册在Observable其它操作符: doOnTerminate:线程停止时(不管正常停or异常停)。...不同是它更加轻量:不需要线程调度,因此也就不需要使用subscribeOn()调度线程,也不需要使用doOnTerminate/doOnUnsubscribe等去还原线程状态了。

    98610

    7 个不使用 TypeScript 理由

    当你习惯检查类型并且不必完全了解代码和平台时,错误和 bug 就会显现出来。 使用 JS,你无需对类型做任何假设,并且可以检查变量具体值以确保它是你期望值。...< NewState, NewActions >) = nextReducer 这是来自 Redux 库代码,所有这 4 行代码都是把 nextReducer 分配给 currentReducer...并不是超集,而是一个子集 TypeScript 是可以编译为 JavaScript 东西,根据定义它不能是超集。...如果你真的想成为一名优秀开发人员,请不要为安慰自己而撒谎,而是要去尝试了解 JavaScript 真正功能及其灵活性。...为什么突然之间使用 TypeScript 就是一个很好例子? 但它能够更多功能… 不再是这样了。的确, TS 于 2012 年首次推出时,它具有诸如类这样功能,但在 JS 中尚不可用。

    1K20

    微服务组件--限流框架Spring Cloud Hystrix详解

    2)服务熔断     失败率达到阈值自动触发降级,熔断器触发快速失败会有助于系统防止崩溃。...extends Throwable>[] ignoreExceptions() default {}; // 定义执行hystrix observable命令模式,类型详细见ObservableExecutionMode...不能传入参数,返回参数和hystrix命令兼容 String defaultFallback() default ""; } 【4】使用示例 //线程池隔离设置,线程池隔离与信号量隔离最大区别在于发送请求线程...Future模式 //分析queue()方法怎么使用Future模式 //熟悉线程池,应该知道线程池有个FutureTask任务 //通过持有FutureTask句柄可以异步获取返回结果 //本质上就是...对象返回 return f; } 【9】分析结果获取是从delegate属性中获取,它被定义为一个观察者 //定义观察者 public Observable toObservable()

    1.4K20

    精读《dob - 框架使用

    答:是的,如果组件要求接收 props 是 observable,以便在其变化时自动 rerender,那某个环境传递了普通 props,这个组件部分功能将失效。...分形组件对结构强依赖,只要给定需要 props 就可以完成功能,而全局数据流组件几乎可以完全不依赖结构,所有 props 都从全局 store 获取。...比如 normalizr 就是一种标准数据规范推进,很多时候我们都将冗余、或者错误归类数据存入 Store,那维护性自然比较差,Redux 推崇应当是正确数据格式化,而不是一昧追求扁平化。...在使用 dob 框架时,异步后赋值需要非常小心: @Action async getUserInfo() { const userInfo = await fetchUser() this.store.user.data...类型推导 如果你在使用 redux,可以参考 你所不知道 Typescript 与 Redux 类型优化 优化 typescript 下 redux 类型推导,如果使用 dob 或 mobx 之类框架

    44710

    RxJS & React-Observables 硬核入门指南

    X(叉)表示由Observable发出错误。 “completed”和“error”状态是最终状态。这意味着,observable在成功完成或遇到错误不能发出任何数据。...如果Observable成功完成了,它可以使用.complete方法通知观察者。如果Observable遇到了错误,它可以使用.error方法将错误推送给观察者。...Actions可观察对象action将发出所有使用store.dispatch()分派actions。可观察状态state将触发根reducer返回所有新状态对象。...Actions可观察对象action将发出所有使用store.dispatch()分派actions。可观察状态state将触发根reducer返回所有新状态对象。...但我不讨厌redux- tank,我喜欢它,我每天都在使用它! 练习1:调用API 用例:调用API来获取文章注释。API调用正在进行时显示加载器,并处理API错误

    6.9K50

    各流派 React 状态管理对比和原理实现

    5.1 observable observable 可以将接收到值包装成可观察对象,这个值可以是 JS 基本数据类型、引用类型、普通对象、类实例、数组和映射等等等。..."; 如果在对象里面使用 get,那就是计算属性了。计算属性一般使用 get 来实现,依赖属性发生变化时候,就会重新计算出新值,常用于一些计算衍生状态。...class Store { @observable count = 0; } 在最新 Mobx 中,推荐使用 makeAutoObservable 来批量设置成员属性为 observable,...常见几种错误用法如下: 错误修改了可观察对象引用 let person = observable({ age: 20 }) // 不会起作用 autorun(() => { console.log...6.9 原理 Recoil 大致原理是这样: 创建一个 atom 对象 使用 selector 时候,会通过 get 来获取到依赖 atom,生成一个 Map 映射关系 使用 useRecoilState

    2.9K61

    MobX学习之旅

    ,使得store状态更新。...@observer就是在你订阅观察对象地方添加注释来监听对象更新 Observable 方法值可以是如下类型: 1、object(原型是Object): Observable方法将该对象克隆成新对象并将属性转变成可观察...Map 4、object(有自身原型对象):这种情况需要使用observable.box(value)来管理这样值 通过box这个箱子来存这些值,并使用.get()用来获取当前值,采用.set(...ofo'); Computed 是在定义相关一些数据发生变化时候自动更新值,通过@computed来修饰使用; 注意:computed修饰是一个状态,状态不能重复声明,只有参与计算值发生改变才会触发...,组件重新render时候会被触发,但在初始渲染前是不会被触发 onError mobx-react提供错误钩子函数来收集错误 用法: import { onError } from 'mobx-react

    1.4K20

    Rxjava2-小白入门(二)

    可能我写文章和他们比相差很远,但是我也不能灰心能帮助一个人是一个人就算不能帮助别人我也会把文章当作笔记,闲暇时好好阅读,毕竟人家写是人家自己总结才是自己。...filter time merge retry retryWhen range Interval ... ---- Rxjava2使用场景 登陆后获取用户信息 关键词搜索 防止按钮重复点击 购物车合并本地和网络数据...它是指发射器意思它里面有onNext(),onComplete(),onError()(注意onComplete和onError两者是互斥不能同时发送),三个方法分别代表发送数据,发送结束,发送错误.../** * map返回也是一个Observable * @param integer 传入类型...比较会发现map返回是基本数据类型或者是Object,而flatmap返回是的ObservableSource,那么我就可以调用操作符再做处理,而map是数据类型不能再做其他处理了。

    1.1K20

    造一个 redux 轮子

    所以我们还要需要判断一下,如果不是普通对象,就抛出错误并说明 action 此时类型。 // 分发 action 函数 function dispatch(action: A) { if (!...,用 type 和 value 表示 JS 值, type === 0 时表示是 Object,而当初 null 地址又为 0x00 所以 null type 一直是 0,因此 typeof...使用例子如下: const store = createStore(reducer, 1) const listener = () => console.log('hello') const unsubscirbe...const next = (state) => state + 2 // 获取下一个状态函数 const observable = store.observable() observable.subscribe...不过这些并不太重要,类型判断完全可以交给 TS 去做就好了,而 TS 类型无需太多纠结,毕竟这不是 TS 教程嘛 总结一下,我们都干了什么: 实现一个事件总线 + 数据(状态)中心 getState

    1.5K20

    Vue中Observable()

    随着组件细化,就会遇到多组件状态共享情况, Vuex当然可以解决这类问题,不过就像 Vuex官方文档所说,如果应用不够大,为避免代码繁琐冗余,最好不要使用它,今天我们介绍是 vue.js 2.6...新增加 Observable API ,通过使用这个 api 我们可以应对一些简单跨组件数据状态共享情况。...定义: observable()方法,用于设置监控属性,这样就可以监控viewModule中属性值变化,从而就可以动态改变某个元素中值,监控属性类型不是变量而是一个函数,通过返回一个函数给viewModule...设置了监控属性后属性,成为双向绑定,即改变两者一方内容,都会改变另一方内容,两者是相互。...: '' } }, mounted() { this.data = store.name // 引入store.js 通过定义store直接获取 }, methods:

    1.2K20
    领券