HarmonyOS 鸿蒙Next ArkTS 约束类中泛型属性初始化

发布于 1周前 作者 yuanlaile 来自 鸿蒙OS

HarmonyOS 鸿蒙Next ArkTS 约束类中泛型属性初始化

环境

  • apiversion:ArkTS-Api 11 (OpenHarmony/Sdk)

问题描述

实际业务中,定义bean类,ArkTS 约束了bean类中泛型属性初始化

export class ResponseResult<E> {
  code: number = 20000;
  data: E;
  message: string = '';
}

编译结果

ERROR: ArkTS:ERROR File: /Users/xxxx/xxxx/xxxx/entry/src/main/ets/rpc/ResponseResult.ets:3:3 
 Property 'data' has no initializer and is not definitely assigned in the constructor.

求助有什么合理的姿势?


更多关于HarmonyOS 鸿蒙Next ArkTS 约束类中泛型属性初始化的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

开发者您好,报错信息中明确提示未初始化,可以在构造器为data赋值。

更多关于HarmonyOS 鸿蒙Next ArkTS 约束类中泛型属性初始化的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


试试将ResponseResult定义为interface,就不用初始化了

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17

谢谢建议,我暂时将文件改为ts来避免artTs的编译检查~

在HarmonyOS鸿蒙Next中,ArkTS的约束类中泛型属性的初始化可以通过构造函数或直接赋值实现。泛型属性在类定义时声明,类型参数在实例化时指定。例如:

class ConstraintClass<T> {
    value: T;

    constructor(initialValue: T) {
        this.value = initialValue;
    }
}

// 实例化时指定类型
const instance = new ConstraintClass<number>(10);

泛型属性value在构造函数中通过initialValue初始化,类型参数T在实例化时指定为number,因此value的类型为number,初始值为10

在HarmonyOS的ArkTS中,约束类中的泛型属性初始化可以通过构造函数或默认值实现。例如:

class Box<T> {
  value: T;

  constructor(initialValue: T) {
    this.value = initialValue;
  }
}

const numberBox = new Box<number>(10);
const stringBox = new Box<string>("Hello");

通过构造函数传递初始值,确保泛型属性在实例化时被正确初始化。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!