【问题标题】:Change the plugin [index and package file ] into typescript with JS-plugin使用 JS-plugin 将插件 [index and package file ] 更改为 typescript
【发布时间】:2018-07-23 08:46:28
【问题描述】:

我是 Typescript 的新手。我最近听说了 JS-Plugins,并用 JavaScript 格式实现了它。当我将整个东西转换成 Typescript [插件的索引和包文件]并在主机应用程序中处理它时似乎错误。请各位大侠帮帮我。

index.d.ts 文件[插件端]

declare function hai (data: any, host: any, options: any){
  return {
    hello: function(){
      return "happy scriptring";
  }
 };
}

export = hai;

但 index.d.ts 文件显示错误“[ts] 无法在环境上下文中声明实现。”。 我将这两个文件放在 .node_modules 下的文件夹中

package.json文件[插件端]

{
 "name": "js-plugins-example-people",
 "version": "0.0.1",
 "extensions": {
 "sample:plugin": {
     "john": "./"
    }
  }
}

host.js文件[应用端]

var hostObj = '';

pluginManager.scanSubdirs([__dirname]);
pluginManager.scan();
pluginManager.connect(hostObj, 'sample:plugin', {multi: true}, 
function (err: any, outputs: any, names: any) {
  outputs.map(function(values: any){
  console.log(values.hello());
})
console.log("Hello World");
});

【问题讨论】:

    标签: javascript node.js typescript plugins package


    【解决方案1】:

    declare 关键字用于当函数(或类或模块或变量)未在 Typescript 中实现但在 Javascript 中实现并且我们只想让编译器知道该函数时使用。在这种情况下,您无需在 Typescript 中声明函数的主体(因为它是在 Javascript 中定义的):

    index.d.ts

    declare function hai(data: any, host: any, options: any): {
        hello(): string
    }
    export = hai;
    

    如果要在Typescript中实现该功能,则不应使用declare关键字,文件的扩展名应仅为.ts而不是d.tsd用于声明)

    index.ts

    function hai(data: any, host: any, options: any) {
        return {
            hello: function () {
                return "happy scriptring";
            }
        };
    }
    
    export = hai;
    

    【讨论】:

    • @titian-cerniconva-dragomir 如何在 package.json 中指定 index.ts 对外界的可见性 { "name": "js-plugins-example-people", "version": "0.0.1", "extensions": { "sample:plugin": { "john": "./" } }}
    • @JohnDavis 这个问题描述了如何从模块中导出类型:stackoverflow.com/questions/43493029/…
    • 我无法在我的主机 typescript 应用程序中获取插件
    【解决方案2】:

    我们需要在应用程序端添加“typings”包。并在您的插件端添加以下内容。

    {
    "name": "sampleplugin",
    "version": "0.0.1",
    "typings": [
        "./globals.ts"
    ],
    "extensions": {
        "default": {
            "default": "./globals.ts"
        }
     }
    }
    

    【讨论】:

      猜你喜欢
      • 2022-11-20
      • 2018-02-06
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      相关资源
      最近更新 更多