什么是 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 的屬性。
我們仍然建議將頂級配置屬性設為可選,這樣您就可以在多個塊中而不是在一個地方傳遞配置。
總結
以上是生活随笔為你收集整理的什么是 SAP Spartacus 里的 module augmentation的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 扒一扒开源世界有哪些licenses?
- 下一篇: SAP Spartacus 4.0 的技