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

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

HarmonyOS
2024-12-23 15:53:29
浏览
收藏 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 /* 判断条件 */;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
分享
微博
QQ
微信
回复
2024-12-23 17:46:12
相关问题
Resource类型如何转为String
2969浏览 • 1回复 待解决
判断一个参数是不是Resource类型
1219浏览 • 1回复 待解决
如何Resource资源对象转成string类型
4093浏览 • 1回复 待解决
HarmonyOS rest参数如何传递任意类型
800浏览 • 1回复 待解决
ArkTS如何判断接收参数是什么类型
1096浏览 • 1回复 待解决
HarmonyOS router参数不能是map类型
736浏览 • 1回复 待解决
taskPool的参数支持Function类型
2455浏览 • 1回复 待解决
HarmonyOS Web如何区分弹窗类型
486浏览 • 1回复 待解决
mysql数据类型使用int类型string类型
3450浏览 • 1回复 待解决
router.pushUrl 无法使用Map类型参数
1038浏览 • 1回复 待解决