javascript - 这是什么类型的javascript语法: "var XX = (function (){...})();" and how can I use it with TypeScript

标签 javascript typescript

我在 PDFJS 查看器示例中找到了这个:

var XX = (function XXClosure() {
  function XX(options) {
    ...
  },
  XX.prototype = {
    myMethod1: function(){...},
    myMethod2: function(){...},
    ...
  }
  return XX;
})();

我创建了一个像这样的构造,但不知道它是什么,并以这种方式在 JavaScript 项目中使用它:

var myXX = new XX(myOptions);
myXX.Method1();

这非常有效。

现在我尝试在 TypeScript 项目中使用此构造:

declare XX:any
import myJavascript.js;
var myXX = new XX(myOptions);

我在运行时收到错误:“XX 不是构造函数”

不要问我为什么这样做,可能还有其他的,我从PDFJS reader.js复制了这个,它有效,我从来没有问过为什么。

但是现在,在 typescript 项目中,它也应该可以工作。有人有解决方案吗?

最佳答案

他们基本上是通过使用自调用函数来创建 ES6 类:即 (function(){})()。这被分配给变量 XX。

Typescript 中的类似构造是

class XX {
  constructor(options){
    //do stuff with options
  }
  myMethod1(){}
  myMethod2(){}
  ...//additional methods
}

您可以像实例化 JS 对象一样实例化它

var xx = new XX(options);

如果您导出该类,它应该可以毫无问题地导入。

export class XX{...}

关于javascript - 这是什么类型的javascript语法: "var XX = (function (){...})();" and how can I use it with TypeScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38769998/

相关文章:

reactjs - React-Table:在组件 ref 上调用 'getResolvedState()' 抛出异常

TypeScript 在类构造函数中是可选的

javascript - jQuery 用户界面 : Re-initializing a function after loading content via AJAX

javascript - "TypeError: object is not a function"

javascript - 窗口 keyup 事件 - 您可以在页面处于事件状态时随时监听 keyup 吗?

angular - 类型 'json' 上不存在属性 'Object'

angular - 获取组件中的路由参数

javascript - 在 JavaScript 中声明函数

javascript - 使用Javascript创建基于浏览器的Xml文档

string - ES6 字符串文字/Typescript 的 Chrome 开发工具问题