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

从ngrx@12升级到13后,`store.select()`中的Typescript错误

基础概念

ngrx 是一个用于 Angular 应用的状态管理库,基于 Redux 架构。ngrx/store 提供了 select 方法,用于从 Redux 状态树中选择特定的状态片段。

升级到 ngrx@13 后的变化

ngrx@13 中,store.select() 方法的签名有所变化,这可能导致 TypeScript 错误。

相关优势

  • 类型安全ngrx 提供了强大的类型检查,确保状态管理的类型安全。
  • 可维护性:通过 Redux 架构,状态管理更加清晰和可维护。
  • 性能优化ngrx 提供了选择器的缓存机制,避免了不必要的重新计算。

类型和应用场景

store.select() 方法用于从 Redux 状态树中选择特定的状态片段。常见的应用场景包括:

  • 从全局状态中选择特定的数据。
  • 使用选择器进行复杂的状态计算。
  • 在组件中订阅状态变化。

常见问题及解决方法

TypeScript 错误

ngrx@13 中,store.select() 方法的签名发生了变化,可能会导致 TypeScript 错误。具体错误可能包括:

代码语言:txt
复制
error TS2345: Argument of type 'string' is not assignable to parameter of type 'Selector<any, any>'.

原因

ngrx@13 中,store.select() 方法不再接受字符串作为参数,而是需要使用选择器函数。

解决方法

  1. 使用选择器函数
  2. 使用选择器函数
  3. 更新现有代码
  4. 如果你之前使用字符串作为参数,需要将其替换为选择器函数。例如:
  5. 如果你之前使用字符串作为参数,需要将其替换为选择器函数。例如:

示例代码

代码语言:txt
复制
// selectors.ts
import { createSelector } from '@ngrx/store';
import { AppState } from './app.state';

export const selectUser = (state: AppState) => state.user;

// user.component.ts
import { Component } from '@angular/core';
import { Store } from '@ngrx/store';
import { selectUser } from './selectors';

@Component({
  selector: 'app-user',
  template: `<div>{{ user | json }}</div>`
})
export class UserComponent {
  user$ = this.store.select(selectUser);

  constructor(private store: Store) {}
}

参考链接

通过以上方法,你应该能够解决从 ngrx@12 升级到 ngrx@13 后遇到的 store.select() 中的 TypeScript 错误。

相关搜索:从javascript/typescript中的类返回错误从Typescript中的错误抛出函数推断类型?从Grails 2.2.5升级到4.0.11后出现令人费解的验证错误重命名Next.JS中的Typescript文件后在Vercel上生成错误从DNN 9.1升级到DNN 9.2后,获取Catalust2-H-Trans的皮肤定制错误安装@google-cloud/storage后如何解决Firebase函数中的Typescript类型错误@grapecity/wijmo在将我的Angular项目从8升级到9后抛出运行时错误升级到MacOS Catalina 10.15.7后,parallels下的Visual Studio Node.js中打开的文件太多错误从函数返回对中的unique_ptr后出现分段错误为什么我在定义了PNG类型后,仍然从PNG文件的TypeScript中得到了一个模块找不到错误?java.lang.VerifyError:从4.0.1升级到4.1.1后,安卓4中的f/i/b/f将jxls从2.3.0升级到2.6.0后,模板中的Excel平均值函数无法正常工作从np数组转换后,keras (tensorflow 2.0)中tensorflow数据集数据的形状错误从本地存储中删除项目后出现未处理的拒绝错误。刷新可以修复它在PeopleSoft应用程序从9.1升级到9.2的过程中,创建UPGCUST失败且没有任何错误如何在VScode中制作漂亮的自动格式化程序而不是在添加React后从typescript类型中删除逗号“找不到id为'io.fabric‘的插件”错误。从build.gradle中删除结构后从应用程序中删除观察程序后出现未初始化的常量VideoObserver错误tastypie:PUT不起作用:从请求的数据流中读取后,错误无法访问正文从.net- dotnet.exe -2.2升级到.net-core-3.1后,我发布的应用程序的输出目录中的核心是什么?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

新发布的 TypeScript 3.5 RC 作出的改进和优化

从微软官方发布的公告得知: 我们的类型系统来了成本 ——我们期望编译器所做的工作需要被转换为更长的编译时间。...不幸的是,为了修复 TypeScript 3.4 中的某些错误,我们意外地引入了一个回归,这可能会导致类型检查器的工作量增加,从而延长了类型检查的时间。那些使用样式组件库的用户受到的影响最大。...新增内容 TypeScript 3.4 候选版本添加了几个可能会在最终版本中新增的内容: Omit 辅助类型:以前,用户通过自己去定义 Omit 来省略对象中的某些属性。...用户在GitHub上的需求反馈(https://github.com/Microsoft/TypeScript/pull/30552)要求将此功能添加到新版本中,并且要求 TypeScript 用 Omit...发布候选版本还有许多破坏性的变化需要注意。确保升级到新的候选版本后不会破坏你的代码!

85240
  • RustLang的语义版本控制仍然破坏了太多应用程序

    在自动构建的环境中,错误的版本化软件包构建可能会造成严重破坏,一位 Rust 开发人员在 Changelog 播客中指出。...他曾在另一种语言 Typescript 中使用过 SemVer,并发现了类似的问题。 “谁来决定是错误修复还是重大破坏?你并不总是知道,”他说。“语义听起来不错,但导致破坏性更改的定义变得模糊。”...TypeScript 的方法更像是将每次更改都视为潜在的破坏性更改,即使是错误修复。...有些软件项目将下一个版本升级到主要版本,仅仅是为了从主要版本获得的营销优势 (来自贸易出版物的免费宣传)。 Krycho 建议,也许我们需要将软件的营销版本作为完全不同的东西。...即使是 Linus Torvalds,Linux 的守护者,也 将 Linux 从 2.6 升级到版本 5,仅仅是因为次要修订的数量超过了他可以用手指和脚趾计算的范围。

    9310

    WebStorm 2020.3新版:增强Vue支持,新增交互提示与嵌入式监视

    以前,您的Watches保存在“Debug”工具窗口的“variable”选项卡下。当您单步执行代码并移至其他上下文时,Watches可能会变成错误。...我们进行了此更改,以简化WebStorm的UI,并帮助您从一个地方查看代码中的所有关键问题。...现在,可以在“Probelm”工具窗口的“Project Errors”选项卡下找到该服务报告的所有错误。...使WebStorm默认打开特定文件 从v2020.3开始,使WebStorm成为打开特定文件类型的默认应用程序变得更加容易。...升级到较新版本的IDE时,所选文件扩展名关联将保持不变。 今天的内容就到这里,如果你想了解更多功能以及文章教程,点击免费获取!

    4.4K10

    Pandas 2.2 中文官方教程和指南(十·二)

    您可以通过指定where有选择性地从表中删除。...不支持重复的列名和非字符串的列名 不支持对象数据类型列中的实际 Python 对象。在尝试序列化时,这些将引发一个有用的错误消息。 查看完整文档。...对于其他驱动程序,请注意 pandas 从查询输出中推断列 dtype,而不是通过查找物理数据库模式中的数据类型。例如,假设userid是表中的整数列。...如果列头行中的字段数等于数据文件主体中的字段数,则使用默认索引。如果大于,则使用前几列作为索引,以使数据主体中的字段数等于列头中的字段数。 表头后的第一行用于确定列数,这些列将进入索引。...由其他错误引起的错误行将被静默跳过。

    35400

    TypeScript 4.1 发布,新增模板字面量类型

    TypeScript 团队警告说,这个模式应该谨慎使用,避免递归类型检查的速度变慢,而且如果超出了受支持的递归深度,TypeScript 编译器将会抛出编译时错误。...在升级到 TypeScript 4.1 时,需要考虑以下几个重大变更: 内置的 lib.d.ts 自动生成 DOM 类型的行为发生了变化,并移除了 Reflect.enumerateAPI,因为 ES2016...类的 abstract 成员不再被标记为 async。调用者只关心返回类型,因此不再存在将 abstract 成员指定为 async 的值。 any 和 unknown 类型现在会在错误的位置传播。...TypeScript 4.2 的相关工作已经在进行中,预计将于 2021 年 2 月完成。...TypeScript 4.2 的内容包括广义索引签名、元组类型中的前 / 中剩余元素、--noImplicitOverride、--noPropertyAccessFromIndexSignature、

    2.5K20

    TypeScript 2.6 来了!

    这些类型不只是帮助捕捉拼写错误、逻辑错误这类的错误,他们也可以给你带来更好的工具像编辑自动补全,更方便的代码库导航,等等其他功能。...这意味着只有有影响的文件将经历一个树状变换流程(将代码从 TypeScript 编译到 ES2016、ES2015、ES5,到 ES3 的过程),以及发布流程(打印出编译后的文件本身)。...将 JSDoc 重构成 TypeScript TypeScript 现在提供了从 JSDoc 注释添加参数的一个重构方式。...自动从 @types 中安装 编辑器不久将会提供一个快速修复方案来给没有类型化的引用安装类型定义。 重大变化和反对 有几个小的变化可能影响您的代码。...在更高级的场景下,我们计划在TypeScript 2.7中把 symbolToString 升级到全功能的 SymbolDisplayBuilder。

    1.1K20

    用 TypeScript 开发 Node.js 程序

    ---- 首先在 TypeScript 中可能有一千种或更多种不同的方法去创建 Node.js 应用程序。我只是想展示自己喜欢的方式。...Package.json 就像我之前说过的,有很多方法可以做到这一点。我喜欢将 Webpack 用于 TypeScript 项目。但首先要做的是从创建一个 package.json 开始。...为了帮助调试,需要在开发模式中运行,用 devtool 字段来指示我们想要源映射。这样,如果出现错误,可以很容易地在代码中找到它出现的位置。...程序 我们仍然需要将 JavaScript 文件的扩展名从 .js 改为.ts。让我们这样做并尝试运行项目。 运行项目后,可以立即看到我们在创建的测试应用程序中犯了“错误”。...最后的注意事项 我确信在 TypeScript 中有数千种不同的方法来编写 Node.js 应用程序。我所写下的绝不是你必须要照样做的方式,这只是你可以做到的方式中的一种。

    2.4K30

    Java 近期新闻:JDK 21 序列集合、JDK 20 向量 API、Gen ZGC、Hilla 2.0

    要了解关于这个版本的更多细节,请查看发布说明。 JDK 21 JDK 21 的早期访问构建Build 13 也于上周发布,其中包括来自 Build 12 的更新,该更新修复了各 问题。...2.0;通过移除未部署的工件来清理 Helidon BOM;从文档中删除了将指标从服务器传播到客户端的说明。...包的 JavaBeans 支持实现;在 NIO2 中异步操作后恢复内联状态,解决实现抛出的意外异常。...JobRunr JobRunr 6.1.1 发布,修复了两个 Bug:使用JobLambda接口执行重复作业时的错误;在使用 Yasson 时,由于作业 JSON 缺少属性而导致的NullPointerException...这是一个整合了 Spring Boot Java 后端和响应式 TypeScript 前端的开源框架。

    1.7K20

    Angular 11 正式发布,放弃对IE 9、10的支持!

    首先,比较受大家关注的两点就是: 1、Angular 11.0.0 将放弃对TypeScript 3.9的支持,转而升级到 TypeScript 4.0。...,并保证对那些新提出的问题在两周之内进行处理,在这个过程中解决了一些有关 router 和 forms 的热门问题。...(5) 更新语言服务预览(Updated Language Service Preview) 语言服务从当前的基于视图引擎逐渐转变 , 更新后的语言服务为开发人员提供了更强大、更准确的体验。...: $ ng serve --hmr 在开发过程中,对组件、模板和样式的最新更改也将立即更新到正在运行的应用程序中。...(7) 更快的构建速度(Faster Builds) 使用 TypeScript v4.0之后让编译变得更快速。安装依赖项时,ngcc 更新过程也将提高 2-4倍的速度。

    2K20

    前端食堂技术周刊第 58 期:TypeScript 4.9 RC、10 月登陆浏览器的新功能、100 天 CSS 挑战

    技术资讯 1.TypeScript 4.9 RC[2] 自 4.9 Beta 以来的新东西: 以下内容并没有在 Beta 版本的博文中提及: Class 中的自动访问器 (accessor 关键字)[3...()[10] 滚动到文本片段[11] 支持 AVIF[12] 支持 Web Push[13] 3.Turbopack 真的比 Vite 快 10 倍吗?...3 支持 node:test module node:前缀核心模块 Web Streams API 全局 API:Blob、BrodcastChannel V8 升级到 10.1 升级工具链和编译器...周刊一锅端 如果大家还没看过瘾,给大家推荐一下食堂技术周刊的合作伙伴,赶快把他们也抱入碗中吧~ 前端早早聊的 18 个成长宝藏库[22]:前端早早鸟,前端早早跑 MDH 前端周刊[23]:大厂一线 P8...4.9 RC: https://devblogs.microsoft.com/typescript/announcing-typescript-4-9-rc/ [3] Class 中的自动访问器 (accessor

    57320

    Java 近期新闻:字符串模板、Quarkus、Open Liberty、PrimeFaces、JobRunr、Devnexus

    作者 | Michael Redlich 译者 | 平川 策划 | 丁晓昀 OpenJDK JEP 430(字符串模板预览版)已经从 JDK 21 的 Candidate 状态提升到 Proposed...它提议用字符串模板(包含嵌入式表达式的字符串字面量)来增强 Java 编程语言。字符串模板在运行时进行解释,即对嵌入式表达式进行计算和验证。评审预计将于 2023 年 4 月 13 日结束。...Quarkus Quarkus 3.0.0 的第 2 个候选版本提供的新特性包括:Gradle 任务quarkusUpdate,用于将 Quarkus 升级到新版本;Dev UI 2 现在默认通过/q...PrimeFaces PrimeFaces 12.0.4 修复了一些 Bug,并提供了一些新特性:恢复了CurrencyValidator类中定义的getExcelPattern()和validate...Gradle Gradle 8.1 的第 3 个候选版本带来了一些新特性,包括:对配置缓存的持续改进;支持依赖关系验证;改进 Groovy 闭包的错误报告;支持 Java lambdas;支持使用 JDK

    1.6K30

    PyCharm Professional 2024.2激活新功能!最新体验,震撼来袭!

    您还可以识别计算机上安装的未使用模型,并删除它们以直接从 IDE 中释放磁盘空间。...更新后的调试器为字符串变量提供格式正确的可视化效果,这些字符串以 JSON、XML、HTML、JWT 和 URL 编码。...框架和技术 GraalJS 作为 HTTP 客户端的执行引擎 我们已将 HTTP 客户端中使用的 JavaScript 执行引擎升级到 GraalJS。...增强的 Terraform 支持 我们增强了 PyCharm 的 Terraform 支持,包括全行代码补全、改进的上下文感知代码补全、更精细的语法高亮显示,以及更好的错误检测和快速修复建议。...能够直接运行和调试 TypeScript 文件 现在,您可以从不同的入口点运行和调试 TypeScript 文件,包括文件上下文菜单、运行小部件和当前文件配置。

    1.2K10
    领券