在 spartacus 中,我们公开了相当多的接受配置的方法。到目前为止,我们在输入这些方法方面做得并不好。您可能会注意到,通常当我们提供配置时,我们使用类型断言(例如 provideConfig({i18n: {…}}))来提高类型安全性和自动完成功能。

在 4.0 版中,我们改变了使用 Config 的方式。由于模块增强 TS 功能,现在每个功能都对这个界面做出了贡献。由于该 Config 现在正确描述了您可以传递给 spartacus 的所有配置选项。

更改后,我们可以将所有接受配置的方法的类型从 any 更改为 Config。您不再需要使用类型断言来受益于更好的类型安全和 DX。

我们仍然保留单独的配置(例如 I18nConfig、AsmConfig、AuthConfig 等),但所有这些接口也有助于 Config 接口。

当您需要访问配置对象时,您仍然可以在构造函数中使用以下语法:protected config: AsmConfig(这只会提示您 AsmConfig 属性),但您现在可以选择使用 protected config: Config.当您想要访问具有类型安全性的完整配置(例如同时使用 FeatureConfig 和 MediaConfig)时,建议使用后者。

对于大多数用户来说,此更改应该是透明的,但如果您的应用程序中有自定义配置,则会影响您。

让我们在一个具有特殊主题配置的示例中展示它:

// existing code
@Injectable({providedIn: 'root',useExisting: Config,
})
export abstract class ThemeConfig {theme?: {dark?: boolean;};
}// required changes// You need to augment `Config` interface from `@spartacus/core` to be able to provide this config with `provideConfig` method
declare module '@spartacus/core' {interface Config extends ThemeConfig {}
}

您不需要在使用此配置的地方更改任何内容,但是在您声明自定义配置的地方,您必须指示 Typescript Config 接口也具有带有深色选项的主题属性。 如果没有它,Typescript 会抱怨您尝试传递不属于 Config 的属性。

我们仍然建议将顶级配置属性设为可选,这样您就可以在多个块中而不是在一个地方传递配置。

什么是 SAP Spartacus 里的 module augmentation相关推荐

  1. SAP Spartacus里的feature module

    SAP Spartacus里Component的使用受featureModule控制:

  2. SAP Spartacus 里的 icon 设计

    同 SAP Fiori 一样,SAP Spartacus 里也有大量的自定义 icon 设计,比如下图的 iconTypes.RESET: 需要调用 iconLoader 获取 RESET icon ...

  3. Media Query在SAP Spartacus里的用途

    Media queries are useful when you want to modify your site or app depending on a device's general ty ...

  4. SAP Spartacus 定义在app.module.ts里的providers依赖注入元数据何时得到处理

    我基于 SAP Spartacus library创建了一个自定义的Storefront实现.在其app.module.ts里,我采用自定义的MyCurrentProductService,去替换 S ...

  5. 如何找到 SAP Spartacus 里某个 Component TypeScript 编译后生成的 JavaScript 位置

    需求 如何找到触发该网络请求的准确代码位置? 从 initiator 里查看调用栈上下文,一点头绪也没有. 找到触发该网络请求的控件的 selector:cx-register 在 Storefron ...

  6. SAP Spartacus 里的 .release-it.json 文件

    在 SAP Spartacus package.json 里有一个依赖叫做 release-it: 这个工具的链接:https://github.com/release-it/release-it 这 ...

  7. SAP Spartacus 里的 cxOutletRef 指令执行过程分析

    先看 cxOutletRef 指令的效果:ng-template 里定义了如下图标 1 区域所示的自定义 UI,通过 cxOutletRef, 将其插入到图标 2 所示的 ProductDetails ...

  8. SAP Spartacus里的localStorage用法

    window-ref.ts: get nativeWindow(): Window {return typeof window !== 'undefined' ? window : undefined ...

  9. SAP Spartacus里product数据请求的HTTP url是在哪里维护的

    我们打开SAP Spartacus home页面时,能观察到product carousel里待显示的product数据从后台被请求: 随便点开一个url,格式如下: https://jerry.ea ...

最新文章

  1. 冲刺周期二--站立会议01
  2. [LeetCode]题解(python):025-Reverse Nodes in k-Group
  3. CentOS 8 利用yum源安装nginx
  4. 使用ABAP批量下载Markdown源文件里的图片到本地
  5. 串口服务器常见五大问题解决方案
  6. figtree如何编辑进化树_进化树的注释:ggtree
  7. 我的内核学习笔记10:Intel GPIO驱动源码分析
  8. poj 2378 树型dp
  9. MAC下go语言的安装和配置
  10. BZOJ3780 : 数字统计
  11. 一战托福5个月112分 经验分享 + 备考资料大放送
  12. 5000张高清壁纸大图(手机用),用Python在法律的边缘又试探了一把
  13. 基金投资入门 5:基金的业务类型及交易中的费用
  14. OSChina 周六乱弹 ——我们能算儿童票么?
  15. 第一序列任小粟的能力_《第一序列》陈无敌刚烈正义,自封大圣,可任小粟做不得慈悲唐僧...
  16. Shopee打包贴单商品代发选星卓越货代服务系统
  17. 组件测试 软件,测试AUTOSAR软件组件的测试方法及系统专利_专利查询 - 天眼查
  18. windows性能监视器API .
  19. Java生成两个圆判断是否重叠,用java随机画出两个圆,判断它们是不是相交
  20. 瞎姬霸写之畅想互联网

热门文章

  1. ORACLE IMP-00017: following statement failed with ORACLE error 6550
  2. 设计一个可扩展的用户登录系统
  3. 添加 Bash 自定义命令
  4. ssh登录命令(转)
  5. PostgreSQL adminpack扩展的作用
  6. DHCP服务和NIS服务
  7. jQuery-个人学习记录(2)
  8. 碰撞的小球 ccf (模拟)
  9. mysql limit的使用方法
  10. nbiot模块WH-NB73 UDP透传和透传云使用说明