这是什么样的javascript语法:"var XX=(函数(){..})()"以及如何将其与Typ
What kind of javascript syntax is this: "var XX = (function (){...})();" and how can I use it with 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 viewer.js复制了这个,它起作用了,我从来没有问过为什么。
但现在,在打字项目中,它也应该起作用。有人能解决这个问题吗?
他们基本上是通过使用一个自调用函数来创建一个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{...}
首先是IIFE
对于TypeScript,您可以使用class
(文档)
这被称为IIFE
var XX = (function XXClosure() {
function XX(options) {
...
},
XX.prototype = {
myMethod1: function(){...},
myMethod2: function(){...},
...
}
return XX;
})();
如果您希望从JavaScript
向TypeScript
注入某些内容,则必须使用扩展名为.d.ts
的文件中的declare
语句。
请参阅此处.d.ts
此外,由于toskv
declare var XX:any
->感谢大家的帮助。我问题的第一部分已经完全回答了。第二部分,我侥幸解决了。我删除了"use strict"行,得到了一条有意义的错误消息:"使用未定义的变量"。
我在"构造函数"中使用了一个全局对象变量,该变量来自当时未加载的其他js模块。将"script src=‘…’"放在主html页面的头块中,而不是放在html模板中,解决了我的问题。
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- Javascript复选框函数:;缺少:在属性id之后"
- "“;变量未引用正确的对象
- "日期“;AJAX请求返回的类型值未定义
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- "工具提示"jQuery插件坏了
- "锻造;React中的表达式
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- 如何提取“;href"最近列表项中的属性值
- CKEditor如何允许href="javascript:void(0)"在小部件中
- 这是什么样的javascript语法:"var XX=(函数(){..})()"以及如何将其与Typ