在HarmonyOS鸿蒙Next中NAPI开发时,怎么把常量导出来,给ts侧用

在HarmonyOS鸿蒙Next中NAPI开发时,怎么把常量导出来,给ts侧用

请问一下,在napi开发时,我c++这边定义了一些常量,我想通过index.d.ts文件导出去,给ts侧用,如下:

export namespace Constants {
  export const Normal = "0";
  export const Passport = "1";
  export const EID = "0";
}

结果在ts引入后,编译没有问题,一调用就报错,提示我 Error message: the requested module ‘xxx’ does not provide an export name ‘Constants’ which imported by ‘xxx/entry/ets/pages/Index’,该如何修改啊。


更多关于在HarmonyOS鸿蒙Next中NAPI开发时,怎么把常量导出来,给ts侧用的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

更多关于在HarmonyOS鸿蒙Next中NAPI开发时,怎么把常量导出来,给ts侧用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,使用NAPI(Native API)开发时,可以通过napi_define_properties函数将常量导出给TypeScript(TS)侧使用。具体步骤如下:

  1. 定义常量:在C++侧定义常量,例如:

    napi_value constant_value;
    napi_create_int32(env, 42, &constant_value);
    
  2. 创建属性描述符:使用napi_property_descriptor结构体描述常量属性:

    napi_property_descriptor desc = { "MY_CONSTANT", nullptr, nullptr, nullptr, nullptr, constant_value, napi_default, nullptr };
    
  3. 导出常量:通过napi_define_properties函数将常量导出到模块对象:

    napi_define_properties(env, exports, 1, &desc);
    
  4. 在TS侧使用:编译后,TS侧可以直接访问该常量:

    const myConstant = require('your_module').MY_CONSTANT;
    

通过以上步骤,即可在HarmonyOS鸿蒙Next中实现常量的导出。

在HarmonyOS鸿蒙Next中,使用NAPI开发时,可以通过napi_define_properties函数将常量导出给TS侧使用。首先,使用napi_create_int32等函数创建常量值,然后通过napi_property_descriptor结构体定义属性描述符,最后调用napi_define_properties将常量绑定到导出对象上。示例代码如下:

napi_value ExportConstants(napi_env env, napi_value exports) {
    napi_value constantValue;
    napi_create_int32(env, 42, &constantValue);

    napi_property_descriptor desc = {"MY_CONSTANT", NULL, NULL, NULL, NULL, constantValue, napi_default, NULL};
    napi_define_properties(env, exports, 1, &desc);

    return exports;
}

这样,TS侧就可以通过MY_CONSTANT访问该常量。

回到顶部