clazz: new (...args: any[]) => T 无法使用

在 ts 中如下定义:

getBean<T>(clazz: new (...args: any[]) => T): T 
 
class Person{ 
 
} 
 
const bean =  response.getBean(Person)

通过传 Person 类型就会转成 Person 对象,现在 ets 不能使用 any,上面定义报错,应该要怎么处理。

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

​当前HarmonyOS兼容ts,ets调用ts即可使用ets里当前只有ESObject,使用限制说明:​https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/typescript-to-arkts-migration-guide-V5

参考如下代码实现:​

export class Utils { 
  static getBean<T>(clazz: ESObject,...args:ESObject): T { 
    return Utils.createObject<T>(clazz, args); 
  } 
 
  /** 
   * 反射创建对象的泛型函数 
   */ 
  static createObject<T>(className: ESObject, args: ESObject[]): T { 
    return new className(...args) as T; 
  } 
} 
 
class Person { 
  name?: string 
  age?: number 
 
  constructor(name: string, age: number) { 
    this.name = name; 
    this.age = age; 
  } 
} 
@Entry 
@Component 
struct testMargin { 
  @State message:string = "TEST"; 
  build() { 
    Row() { 
      Column() { 
        Text(this.message) 
          .fontSize(50) 
          .fontWeight(FontWeight.Bold) 
          .fontFamily('BeaconRawFile') 
          .onClick(() => { 
            const person = Utils.getBean<Person>(Person,'小马',20) 
            this.message = JSON.stringify(person) 
            console.error('TAG', JSON.stringify(person)) 
          }) 
      } 
      .width('100%') 
    } 
    .height('100%') 
  } 
}
分享
微博
QQ
微信
回复
4天前
相关问题
如何使用等效使用any、unknown?
1073浏览 • 1回复 待解决
为什么ArkTS中禁止使用any
780浏览 • 1回复 待解决
ArkTs怎么根据模版new对象返回
590浏览 • 0回复 待解决
new Date()获取的月和日时间错误。
1704浏览 • 1回复 待解决
HarmonyOS Use explicit types instead of "any"
418浏览 • 1回复 待解决
本地如何存储Array<T>
67浏览 • 1回复 待解决
new 出来的对象如何获取所属类
1802浏览 • 1回复 待解决
hb build -T单独编译,应如何编译
3497浏览 • 1回复 待解决
Image无法使用bindContextMenu
1805浏览 • 1回复 待解决
HarmonyOS 无法使用$$双向绑定
560浏览 • 1回复 待解决
DevEco Device无法使用Previewer预览
35728浏览 • 3回复 待解决
使用web无法打开HarmonyOS网址
41浏览 • 1回复 待解决