試圖將一些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