HarmonyOS鸿蒙Next中如何定义一个可空的范型

HarmonyOS鸿蒙Next中如何定义一个可空的范型

export interface FinishListener<T> {
  onFinish(code: number, message: string, data: T): void
}

这里的data如果传入null会报错,希望不报错,要怎么做

4 回复

可以修改为以下方式

export interface FinishListener<T> {

  onFinish(code: number, message: string, data?: T): void

}

function fx(i: FinishListener<object>, data: object | undefined) {

  if (data == null) {

    return i.onFinish(0, 'aaa')

  } else {

    return i.onFinish(0, 'aaa', data)

  }

}

更多关于HarmonyOS鸿蒙Next中如何定义一个可空的范型的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


export interface FinishListener<T> { onFinish(code: number, message: string, data?: T|null): void }

这样就可以传空了

在HarmonyOS鸿蒙Next中,定义一个可空的泛型可以通过使用?符号来实现。具体语法如下:

class Example<T> {
    value: T | null = null;

    setValue(value: T | null): void {
        this.value = value;
    }

    getValue(): T | null {
        return this.value;
    }
}

在上述代码中,T是泛型类型参数,T | null表示该类型可以是T类型或null。通过这种方式,可以在泛型类中定义可空的值。

在HarmonyOS鸿蒙Next中,定义一个可空的泛型可以通过使用?来表示。例如,定义一个可空的泛型类或方法时,可以使用T?来表示该泛型类型可以为空。具体示例如下:

class Box<T> {
    private T value;

    public Box(T value) {
        this.value = value;
    }

    public T getValue() {
        return value;
    }
}

Box<String?> nullableBox = new Box<>(null);
String? nullableValue = nullableBox.getValue();

在这个示例中,Box<T>是一个泛型类,而Box<String?>表示Box可以存储一个可为空的String类型值。

回到顶部