HarmonyOS 鸿蒙Next中AKI如何将继承类暴露给ts层
HarmonyOS 鸿蒙Next中AKI如何将继承类暴露给ts层
C++中定义有两个类,
class A {
public:
bool a = false;
}
class B:A {
public:
bool b = false;
}
现在想将class B暴露给ts层,外部可以访问 a、b两个属性,应该怎么写?
在中心库的文档中没有找到可以声明继承关系的语法。如果直接在class B的 JSBIND_CLASS 中用JSBIND_PROPERTY绑定a属性,会报错。
3 回复
JSBIND_EXTEND
用这个声明可以
更多关于HarmonyOS 鸿蒙Next中AKI如何将继承类暴露给ts层的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中通过AKI将继承类暴露给TS层,需要使用JSBIND_INHERITS宏声明继承关系。对于你的示例代码,正确写法应该是:
#include "aki/jsbind.h"
class A {
public:
bool a = false;
};
JSBIND_CLASS(A) {
JSBIND_CONSTRUCTOR<>();
JSBIND_PROPERTY(a);
};
class B : public A {
public:
bool b = false;
};
JSBIND_CLASS(B) {
JSBIND_INHERITS(A); // 声明继承关系
JSBIND_CONSTRUCTOR<>();
JSBIND_PROPERTY(a); // 继承的属性
JSBIND_PROPERTY(b); // 自身的属性
};
关键点:
- 必须使用JSBIND_INHERITS宏显式声明继承关系
- 基类A也需要用JSBIND_CLASS进行绑定
- 子类B中需要同时绑定继承的属性和自身属性
这样TS层就能正确访问到B实例的a和b属性了。