什么是 SAP Spartacus 里的 module augmentation

简介: 什么是 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 的属性。


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


相关文章
|
7月前
|
缓存 负载均衡 前端开发
SAP Spartacus 和 Sticky session 相关的话题
SAP Spartacus 和 Sticky session 相关的话题
39 0
|
7月前
|
数据库
关于 SAP ABAP Enqueue Function Module 的输入参数 _wait
关于 SAP ABAP Enqueue Function Module 的输入参数 _wait
32 0
|
7月前
|
BI
SAP ABAP 系统里和传输请求读写相关的 Function Module
SAP ABAP 系统里和传输请求读写相关的 Function Module
47 0
|
4月前
|
数据库
SAP ABAP 更新函数(Update Function Module)执行出错的原因分析试读版
SAP ABAP 更新函数(Update Function Module)执行出错的原因分析试读版
35 0
|
4月前
|
数据库
130. SAP ABAP 更新函数(Update Function Module)执行出错的原因分析
130. SAP ABAP 更新函数(Update Function Module)执行出错的原因分析
26 0
|
4月前
|
JSON 开发者 数据格式
关于 SAP Spartacus LandingPage2Template 区域的 layout 设计实现
关于 SAP Spartacus LandingPage2Template 区域的 layout 设计实现
26 0
|
4月前
|
搜索推荐 开发者 UED
关于 SAP Spartacus 层的 UI 设计
关于 SAP Spartacus 层的 UI 设计
42 0
|
4月前
|
开发者 UED
SAP Spartacus BREAKPOINT 枚举类型在 Spartacus layout 实现中的作用
SAP Spartacus BREAKPOINT 枚举类型在 Spartacus layout 实现中的作用
25 0
|
7月前
|
前端开发
Spartacus 应用中 Lazy Loaded Module 初始化逻辑的实现方案
Spartacus 应用中 Lazy Loaded Module 初始化逻辑的实现方案
34 0
|
7月前
|
JavaScript API
如何使用 TypeScript 的 module augmentation 技术增强 Spartacus Feature Library
如何使用 TypeScript 的 module augmentation 技术增强 Spartacus Feature Library
38 0