HarmonyOS 鸿蒙Next有办法简化下面的操作么?applyDefaults方法有些重复

发布于 1周前 作者 yuanlaile 来自 鸿蒙OS

HarmonyOS 鸿蒙Next有办法简化下面的操作么?applyDefaults方法有些重复

export class WebViewOptions {
  usePlugin: boolean = false
  injectPlugins: string[] = []
  forceLandSpace: boolean = false
  addImageLongPress: boolean = false
  adjustSafeArea: boolean = false
  navigationBar: NavigationBar = new NavigationBar()
  progressHide: boolean = false
  progressColor: string = '#008000'
  appendUserAgent: string = ''
}

export class NavigationBar {
  color: string = '#ffffff'
  buttonColor: string = '#000000'
  title: string = ''
  titleColor: string = '#000000'
  titleSize: number = 18
  hideMenu: boolean = false
}

const defaultWebViewOptions = new WebViewOptions()
const defaultNavigationBar = defaultWebViewOptions.navigationBar

function applyDefaults(options?: WebViewOptions): WebViewOptions {
  return {
    usePlugin: options?.usePlugin ?? defaultWebViewOptions.usePlugin,
    injectPlugins: options?.injectPlugins ?? defaultWebViewOptions.injectPlugins,
    forceLandSpace: options?.forceLandSpace ?? defaultWebViewOptions.forceLandSpace,
    addImageLongPress: options?.addImageLongPress ?? defaultWebViewOptions.addImageLongPress,
    adjustSafeArea: options?.adjustSafeArea ?? defaultWebViewOptions.adjustSafeArea,
    navigationBar: {
      color: options?.navigationBar?.color ?? defaultNavigationBar.color,
      buttonColor: options?.navigationBar?.buttonColor ?? defaultNavigationBar.buttonColor,
      title: options?.navigationBar?.title ?? defaultNavigationBar.title,
      titleColor: options?.navigationBar?.titleColor ?? defaultNavigationBar.titleColor,
      titleSize: options?.navigationBar?.titleSize ?? defaultNavigationBar.titleSize,
      hideMenu: options?.navigationBar?.hideMenu ?? defaultNavigationBar.hideMenu,
    },
    progressHide: options?.progressHide ?? defaultWebViewOptions.progressHide,
    progressColor: options?.progressColor ?? defaultWebViewOptions.progressColor,
    appendUserAgent: options?.appendUserAgent ?? defaultWebViewOptions.appendUserAgent,
  };
}

const json = '{}'
const options = applyDefaults(JSON.parse(json) as WebViewOptions)

更多关于HarmonyOS 鸿蒙Next有办法简化下面的操作么?applyDefaults方法有些重复的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

你这其实就是json 转对象,没有什么特别简便的方法
这边有个三方库class-transformer ,看看是否满足需求
文档地址:https://developer.huawei.com/consumer/cn/forum/topic/0202149451978737371?fid=0109140870620153026

更多关于HarmonyOS 鸿蒙Next有办法简化下面的操作么?applyDefaults方法有些重复的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对帖子标题“HarmonyOS 鸿蒙Next有办法简化下面的操作么?applyDefaults方法有些重复”的问题,可以考虑以下几种方式来简化applyDefaults方法的重复调用:

  1. 方法重载: 如果applyDefaults方法接受不同的参数或参数组合,可以考虑定义多个重载方法,每个方法处理特定的参数情况,从而减少重复代码。

  2. 默认参数: 在HarmonyOS的ArkUI(如果适用)或相关编程环境中,如果支持默认参数,可以为applyDefaults方法设置默认参数值,这样在调用时只需传递必要的参数,减少重复。

  3. 配置类: 创建一个配置类,将applyDefaults方法需要的配置封装在配置类中。在调用applyDefaults时,只需传递一个配置对象,减少参数的传递和方法的重复调用。

  4. 工具类或静态方法: 将applyDefaults方法及其相关逻辑封装在一个工具类或静态方法中,通过调用工具类或静态方法的方式减少代码的重复。

  5. 模板方法: 如果applyDefaults方法在不同的调用场景中只有部分逻辑不同,可以考虑使用模板方法模式,将公共逻辑放在父类的抽象方法中,将不同逻辑放在子类的具体实现中。

如果问题依旧没法解决请联系官网客服, 官网地址是 https://www.itying.com/category-93-b0.html

回到顶部