HarmonyOS鸿蒙Next中方法里有interface,实现问题

HarmonyOS鸿蒙Next中方法里有interface,实现问题

public static searchPageData(o: string, callBack: OnCallBack<BaseResultBean<SearchBean>>)

export interface OnCallBack<T = object> { onSuccess(bean: T): void;

onError(error: AxiosError): void; }

在外面怎么实现它呢?主要是那个interface,看怎么实现。 HttpUtil.searchPageData(“harmonyos”,{这里})


更多关于HarmonyOS鸿蒙Next中方法里有interface,实现问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

ArkTS不支持匿名类,建议使用嵌套类实现。因为使用匿名类创建的对象类型未知,这与ArkTS不支持structural typing和对象字面量的类型冲突。

//原先

class A {
  foo() {
    let a = new class {
      v: number = 123
    }();
  }
}

//现在

class A {
  foo() {
    class B {
      v: number = 123
    }
    let b = new B();
  }
}

//或者

export interface IVoiceRecordListener<T> {
  onSucces(t: T): void
  onFailed(code: string, reason: string): void
}

let obj: IVoiceRecordListener<string> = {
  onSucces: () => {},
  onFailed: () => {}
}

关于使用方法可以参考如下示例:

import { MyInterDemo } from '../interface/MyInterDemo'

@Entry
@Component
struct TestInterfacePage {

  testInter(inter: MyInterDemo) {
    console.log('testInter');
    inter.func_1();
    inter.func_2();
    inter.func_3('hello');
  }

  build() {
    Row() {
      Column() {
        Button('Test interface')
          .onClick(() => {
            let demo: MyInterDemo = {
              func_1: () => {
                console.log('func_1');
              },
              func_2: () => {
                console.log('func_2');
                return true;
              },
              func_3: (arg: string) => {
                console.log('func_3:' + arg);
              }
            }
            this.testInter(demo);
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

MyInterDemo

export interface MyInterDemo {
  func_1(): void;
  func_2(): boolean;
  func_3(arg: string): void;
}

更多关于HarmonyOS鸿蒙Next中方法里有interface,实现问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,interface是一种定义方法签名的抽象类型,不能直接实例化。要在类中实现interface,需要使用implements关键字。具体步骤如下:

  1. 定义interface:使用interface关键字声明一个接口,并在其中定义方法签名。例如:

    interface MyInterface {
        myMethod(): void;
    }
    
  2. 实现interface:在类中使用implements关键字实现该接口,并提供具体的方法实现。例如:

    class MyClass implements MyInterface {
        myMethod(): void {
            console.log("Method implemented");
        }
    }
    
  3. 使用实现类:创建实现类的实例,并调用接口中定义的方法。例如:

    let obj = new MyClass();
    obj.myMethod();
    

在鸿蒙Next中,interface主要用于定义公共行为或契约,允许多个类以不同的方式实现相同的方法签名。这种方式有助于代码的模块化和扩展性。

在HarmonyOS鸿蒙Next中,如果方法中包含interface,你需要实现该接口的具体逻辑。首先,定义一个接口,然后在类中实现该接口,并重写接口中的方法。例如:

public interface MyInterface {
    void myMethod();
}

public class MyClass implements MyInterface {
    @Override
    public void myMethod() {
        // 具体实现逻辑
    }
}

在方法中使用时,可以创建接口的实例并调用其方法。确保实现类正确地覆盖了接口中的所有方法。

回到顶部