HarmonyOS 当参数可选类型为 string | number | Resource | Margin | MyInterface1 | MyInterface2 | MyClas时,如何区分参数类型

假设有一个参数,可选类型为:string | number | Resource | Margin | MyInterface1 | MyInterface2 | MyClass,如何区分这个参数是哪个类型的,特别注意是如何区分不同的interface(类似的场景,其他系统可以通过conformsToProtocol来区分)

HarmonyOS
3天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

类型断言(Type Assertions): 你可以使用类型断言来告诉编译器你确信变量的类型。

function handleParameter(param: string | number | Resource | Margin | MyInterface1 | MyInterface2 | MyClass) {
  if (typeof param === 'string') {
    // param 是 string 类型
  } else if (typeof param === 'number') {
    // param 是 number 类型
  } else if (param instanceof Resource) {
    // param 是 Resource 类型
  } else if ('marginLeft' in param && 'marginTop' in param) {
    // param 是 Margin 类型
  } else if (isMyInterface1(param)) {
    // param 是 MyInterface1 类型
  } else if (isMyInterface2(param)) {
    // param 是 MyInterface2 类型
  } else {
    // 假设剩下的类型是 MyClass
    // param 是 MyClass 类型
  }
}

// 假设你定义了类型守卫函数
function isMyInterface1(param: any): param is MyInterface1 {
  // 根据MyInterface1的特性来返回布尔值
  return /* 判断条件 */;
}

function isMyInterface2(param: any): param is MyInterface2 {
  // 根据MyInterface2的特性来返回布尔值
  return /* 判断条件 */;
}
分享
微博
QQ
微信
回复
3天前
相关问题
Resource类型如何转为String
2175浏览 • 1回复 待解决
判断一个参数是不是Resource类型
449浏览 • 1回复 待解决
如何Resource资源对象转成string类型
3172浏览 • 1回复 待解决
ArkTS如何判断接收参数是什么类型
44浏览 • 1回复 待解决
HarmonyOS router参数不能是map类型
307浏览 • 1回复 待解决
taskPool的参数支持Function类型
1735浏览 • 1回复 待解决
HarmonyOS Web如何区分弹窗类型
8浏览 • 1回复 待解决
mysql数据类型使用int类型string类型
2662浏览 • 1回复 待解决
router.pushUrl 无法使用Map类型参数
510浏览 • 1回复 待解决
HarmonyOS Resource怎么进行转换类型
662浏览 • 1回复 待解决