我正在尋找更新一些較舊的js庫我必須使用ES6約定打字,但我遇到了一個絆腳石。內聯使用導入與打字稿1.6和es6語法
所以在歷史上,當我加載一個JSON文件動態,我會做這樣的事情:
this.someFunctionWhichDoesStuff = function() {
var config = require(theConfigDir); // theConfigDir was a variable
// ... other stuffs
}
這工作得很好,我也將在某些情況下,動態地包括從文件夾也有些模塊:
this.someFunctionWhichDoesStuff = function() {
var actualImplementationToUse = require(theDirectoryWithImplementation); // theConfigDir was a variable
// ... other stuffs
}
這使我可以根據早期的配置切換實現,並且運行良好。這裏需要注意的要點是,模塊的解析器是變量而不是靜態文本,並且它們在不在根級別的函數內部運行。
考慮到這一點我走到ES6風格模塊包括在TS和意識到我不能做上述情況,因爲這不是有效的語法所以:
public someFunctionWhichDoesStuff() {
import actualImplementationToUse from theDirectoryWithImplementation;
// ... other stuffs
}
它是有道理的,因爲我知道ES6模塊需要靜態地解析模塊,所以我很酷,但在打字稿1.6的世界中,我不確定如何解決這個問題,因爲var includedModule = require(theDirectory);
似乎是無效的,因爲它不知道require
,可以通過包含節點js d.ts
文件,但是我希望有人能夠對未來新的es6世界中期望的方法進行一些指導?
添加類型的require,我使用它來允許webpack需要的意見/風格... https://github.com/TypeStrong/ts-loader#loading-other-resources-and-code-splitting – Brocco
確定我知道我可以做到這一點,但有沒有更多的'es6'這樣做?即如果我使用require,我被鎖定在所有消費者(無論是瀏覽器還是節點)上使用require,我想沒有,但我只是想在我走下這條路線之前進行檢查。 – Grofit