如何为现有JavaScript模块模式在Typescript中编写模块模式
我对Javascript和Typescript都是新手。我必须将Javascript代码迁移到Typescript中。下面是一个模块模式,它返回自身而不是公开私有方法和属性(如果我错了,请纠正我)。所以我不知道如何处理这种情况如何为现有JavaScript模块模式在Typescript中编写模块模式,javascript,typescript,module-pattern,revealing-module-pattern,Javascript,Typescript,Module Pattern,Revealing Module Pattern,我对Javascript和Typescript都是新手。我必须将Javascript代码迁移到Typescript中。下面是一个模块模式,它返回自身而不是公开私有方法和属性(如果我错了,请纠正我)。所以我不知道如何处理这种情况 var MySocket = (function () { function MySocket(location, openCallback, closeCallback, errorCallback) { //Code Goes Here
var MySocket = (function () {
function MySocket(location, openCallback, closeCallback, errorCallback) {
//Code Goes Here
}
MySocket.prototype.Open = function () {
//Code Goes Here
}
MySocket.prototype.Close = function () {
//Code Goes Here
}
return MySocket;
})();
这称为显示模块模式。您仍然可以在TypeScript中使用它。“现代”模式将删除IIFE和
return
语句,而将export
修饰符添加到MySocket
:
export function MySocket(location, openCallback, closeCallback, errorCallback) {
//Code Goes Here
}
MySocket.prototype.Open = function () {
//Code Goes Here
}
MySocket.prototype.Close = function () {
//Code Goes Here
}
然而,这种方法的用法略有不同。ES6模块应使用import
语句从其他ES6模块导入,而不仅仅是按名称引用变量:
import { MySocket } from './MySocket'
抱歉,它不起作用,如果我删除IIFE并返回,它不确定如何维护封装。我将其添加到名称空间并导出函数export,但不起作用。我以前试过。对于Es6模块,封装就是模块本身。如果您仍然将所有文件连接在一起,那么Typescript导出语法并不真正适合您的用例。我建议您阅读ES6模块的工作原理,以便更好地理解