试图将一些JS代码迁移到TypeScript。我们有许多JavaScript文件被编写为Revealing Module Patterns。这里是一个减少的格局:迁移到TypeScript。如何打破长揭示模块模式为部分?
var thing = (function() {
var var1, var2;
function init() {
var1 = document.getElementById("var1");
var2 = document.getElementById("var2");
function func1() {
// really long function that needs access to var1
}
function func2() {
// really long function that needs access to var2
}
}
// Our Bootstrap file fires this when ready
BootStrap.DOMReady(init);
return {
Func1: func1,
Func2: func2,
};
})();
然而,目前func1
和func2
是很长的功能,我们想“分”到他们自己的func1.ts
和func2.ts
文件更容易维护。但是,他们需要访问init的变量。
什么是实现这种功能的最佳方式?理想情况下,我们希望为个别功能提供更小的.ts
文件,我们可以将它们带入main.ts
文件。
我们是否需要进口/出口路线?
我们可以通过三次斜杠指令实现这一点,并以某种方式保持作用域(不确定是因为内部函数需要保留函数作用域,并且三角斜杠似乎需要在文件开始时定义)?
它甚至有可能做这样的事情吗?
var thing = (function() {
function init() {
/// <reference path="ts/func1.ts" />
/// <reference path="ts/func2.ts" />
}
// Our Bootstrap file fires this when ready
BootStrap.DOMReady(init);
return {
Func1: func1,
Func2: func2,
};
})();
真正init在做什么?定义函数并没有做任何事情 - 就像现在你可以将外部函数移动到与“var thing”相同的范围内,对吧? – Lostfields