HarmonyOS鸿蒙Next中ArkTS一个类定一个T方法,如何判断入参是否是T类型

HarmonyOS鸿蒙Next中ArkTS一个类定一个T方法,如何判断入参是否是T类型

4 回复

您好:可以尝试用typeof去判断基础类型,利用函数重载或者策略模式自定义校验方法去校验

interface A {
  type: 'A';
  aProp: number;
}

interface B {
  type: 'B';
  bProp: string;
}

// 函数重载 
function isType(obj: any, type: 'A'): obj is A;

function isType(obj: any, type: 'B'): obj is B;

function isType(obj: any, type: 'A' | 'B'): boolean {
  if (type === 'A') {
    return obj != null && obj.type === 'A' && typeof obj.aProp === 'number';
  } else {
    return obj != null && obj.type === 'B' && typeof obj.bProp === 'string';
  }
}

更多关于HarmonyOS鸿蒙Next中ArkTS一个类定一个T方法,如何判断入参是否是T类型的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,ArkTS可以通过instanceof操作符来判断入参是否是T类型。例如,假设有一个类MyClass,你可以使用param instanceof MyClass来检查param是否为MyClass类型。如果paramMyClass的实例,表达式返回true,否则返回false。这种方法适用于类型检查。

在HarmonyOS Next的ArkTS中,可以使用instanceof操作符来判断入参是否是特定类型。例如:

class MyClass {
  static isT(param: any): boolean {
    return param instanceof T;  // 判断param是否是T类型
  }
}

如果需要更灵活的类型检查,可以使用类型谓词:

function isT(value: any): value is T {
  // 添加具体的类型判断逻辑
  return value instanceof T || 
         (value && typeof value.someProperty === '...');
}

注意:ArkTS基于TypeScript,类型检查主要在编译时进行,运行时类型信息有限。对于接口等类型,需要自行实现类型守卫函数来判断。

回到顶部