Как использовать C аддон в машинописи - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть аддон ac (с использованием napi) для nodejs, и я могу правильно запустить его в js code.now, я хочу использовать его в машинописном тексте, я пытаюсь написать файл .d.ts, но всегда не удается. Как я могу правильно написать файл d.ts? C-аддон - это код helloworld, подобный этому:

#include <node_api.h>
#include <stdio.h>


napi_value Helloworld(napi_env env, napi_callback_info info)
{
    napi_status status;

    size_t argc = 1;
    napi_value argv[1];
    status = napi_get_cb_info(env, info, &argc, argv, 0, 0);
    if(status != napi_ok )
    {
        napi_throw_type_error(env,"", "Wrong number of arguments");
        status = napi_get_undefined(env, argv);
    }
    printf("Hello\n");
    return NULL;
}

napi_value Init(napi_env env, napi_value exports)
{
    napi_status status;
    napi_property_descriptor des =
       { "helloworld", 0, Helloworld, 0, 0, 0, napi_default, 0 };
    status = napi_define_properties(env, exports, 1, &desc);
    return exports;
}

NAPI_MODULE(addon, Init)

и код js такой:

//this can run
const addon = require("../1/build/Release/addon");
addon.helloworld();

js код может работать. И теперь я хочу сделать это в машинописном тексте, как я могу написать файл .d.ts и как я могу запустить его в машинописном тексте? Спасибо. Я попробовал немного, но потерпел неудачу:

//this is fail code    
declare module "addon" {
      function helloworld():string 
      export = addon
    }

    /*
    const addon = require('./addon')
    declare  module 'addon'{
      export function addon.helloworld():string 
    }
    export function addon.echo(input: string):string
    export function echo {
    } = addon.echo */
    /* export = helloworld
    declare function helloworld (): string
     */
    /*
    export = MyFunction;
    declare function MyFunction(): string;
    */

    /* const addon = require('./addon')
    export default module 'addon' {
      export function helloworld():string
    }  */
    /* 
    const addon = require('./addon')
    export function helloworld():string
     */

1 Ответ

0 голосов
/ 25 апреля 2018

Попробуйте добавить файл addon.d.ts в папку '../1/build/Release/', содержимое должно быть:

export function helloworld (): string

Вы можете увидеть эту проблему для более подробной информации: https://github.com/Microsoft/TypeScript/issues/8335

...