如何将 JS 文件中由 IIFE 初始化的 var 导入到 TS class?

How to import a var initialized by an IIFE in JS File to a TS class?

我的最终目标是将steelseries.js(https://github.com/HanSolo/SteelSeries-Canvas)集成到用react编写的Grafana插件中。任重而道远...
目前,我正在尝试在 ts class.
中导入 steelseries var 总而言之,我有一个具有以下结构的 JS 文件(超过 10000 行):

var helloWorld = (function() {

    var helloDisplay = function () {
        console.log("Hello World");
    }
    return {msgDisplay : helloDisplay}

}) ();

我想将其导入到 TS class 中:

// how to import my JS script in myJs ?

class MyClass {
    ...
    tsHello (): void {
        myJs.msgDisplay()
    }
}

什么是最简单的 and/or 最有效的方法(JS 文件很长)? (我的 class 在 TS 文件中。我尝试了很多东西,我添加了 .d.ts 文件但没有成功)。

这对你有帮助吗?

interface HelloWorld{
  msgDisplay():void,
  foo:string,
  baz: number
}

var helloWorld = (function():HelloWorld {

  var helloDisplay = function () {
      console.log("Hello World");
  }
  return {
    msgDisplay : helloDisplay,
    foo: 'bar',
    baz: 123
  }

})()

不确定,这是最好的方法,但它有效且简单。

  1. tsconfig.json 文件:
    "compilerOptions": { "target": "es5", "module": "es6", "strict": true, }
  2. 在 js 文件中:添加导出
    export var helloWorld = (function() { ...
  3. 创建一个与 js 文件同名的 .d.ts 文件
    export var helloWorld: any;
  4. 在ts文件中导入
    import { helloWorld as myJs } from './varIIFE' class MyClass { tsHello () {myJs.msgDisplay()} } let myInstance = new MyClass(); myInstance.tsHello()

  5. 在生成的js文件中添加index.html中的模块属性
    <script src="compilatedfile.js" type="module"></script>