什么是 SAP Spartacus 里的 module augmentation
在 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 的属性。
我们仍然建议将顶级配置属性设为可选,这样您就可以在多个块中而不是在一个地方传递配置。
相关文章
- 91. SAP 系统里的中文数据,用 ABAP 导出成 Excel 文件时遇到乱码的分析和解决办法
- 关于 SAP UI5 设备类型检测的实现原理
- 用React开发SAP Fiori应用
- 在SAP WebIDE里开发一个React component
- 什么是 SAP ABAP FDA - Fast Data Access 技术?
- 什么是 SAP Support Package Stack
- SAP CRM Fiori 应用 My Note 里创建 Note 失败的一个原因分析
- 什么是SAP GUI的client
- SAP CRM附件创建的internal模式是什么含义
- 在SAP CDS view上添加扩展字段后激活,背后的实现原理
- SAP 电商云 Spartacus UI Cart ID 的数据源,什么时候从 current 转换成真实的 cart id
- SAP 产品一脉相承的 UI 增强思路,在 SAP Commerce Cloud(电商云) UI 增强实现中的体现
- SAP Spartacus B2B Unit page convertListItem方法的工作原理
- SAP Spartacus B2B页面的6个tile,url是维护在什么地方的?
- SAP Spartacus使用到的技术栈
- 关于 SAP Spartacus scss 处理逻辑里的变量 $useLatestStyles
- 通过 SAP UI5 的 TypeScript 开发环境,来学习什么是 DefinitelyTyped
- SAP Commerce Cloud Accelerator Checkout Delivery Mode 选择页面的实现 JSP
- SAP CRM IPM行业解决方案里如何创建IP product
- SAP CRM CL_CRM_BOL_ENTITY实例的sendable属性是什么时候置位的
- 什么是SAP CRM的Custom Transaction Context
- 什么是SAP CRM呼叫中心的main object
- SAP HANA里的情感分析实现的SQLScript代码
- SAP OData metadata 定义中,entity type key 的作用是什么
- SAP Cloud Platform Identity Authentication service
- SAP UI5 初学者教程之十 - 什么是 SAP UI5 应用的描述符 Descriptor 试读版
- SAP Spartacus默认的货币列表currency是从源代码什么地方读取的
- 迈入 SAP Fiori Elements 开发的大门 - 什么是 Fiori Elements,它和 Freestyle UI5 开发方式有何区别?