ArkTS中没有any类型,大家都是如何定义动态类型的

TypeScript是可以使用any类型来定义动态类型的,在ArkTS中貌似没有这种语法,这导致在某些应用场景中只能使用复杂的联合类型来描述变量,不够灵活,有其他的方案么?

ArkTS
7天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
中杯可乐多加冰

你好友友,在ArkTS中处理动态类型,可以用以下方案:

  1. 联合类型+类型守卫
    |组合可能类型,配合typeof/instanceof进行类型收窄

type Dynamic = string | number | boolean;
function handle(val: Dynamic) {
  if (typeof val === 'string') {
    // 处理字符串
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  1. 万能对象类型
    使用objectRecord<string, unknown>表示复杂动态对象

const dynamicObj: Record<string, unknown> = {
  key: "value",
  count: 123
};
  • 1.
  • 2.
  • 3.
  • 4.
  1. JSON反序列化
    对API返回的动态数据,先用JSON.parse转为unknown再类型断言

const data = JSON.parse(jsonStr) as MyInterface;
  • 1.
  1. 类继承多态
    通过基类+派生类实现运行时类型识别

class Base {}
class SubA extends Base {}
class SubB extends Base {}
const arr: Base[] = [new SubA(), new SubB()];
  • 1.
  • 2.
  • 3.
  • 4.


分享
微博
QQ
微信
回复
7天前
相关问题
HarmonyOS ArkTS关于类型定义
439浏览 • 1回复 待解决
HarmonyOS any类型使用
926浏览 • 1回复 待解决
HarmonyOS ArkTS不支持any数据类型做返回
667浏览 • 1回复 待解决
ArkTS类型系统如何使用?
1171浏览 • 1回复 待解决
HarmonyOS any类型用什么替代
486浏览 • 1回复 待解决
ArkTS如何使用字典类型对象
1156浏览 • 1回复 待解决
HarmonyOS string.json如何定义数组类型
574浏览 • 1回复 待解决
HarmonyOS ArkTS如何判断Object类型
919浏览 • 1回复 待解决
HarmonyOS ets如何定义class通用类型
613浏览 • 1回复 待解决
HarmonyOS ArkTS类型转换问题
1803浏览 • 1回复 待解决