2016-11-20 75 views
6

在打字稿handbook用於導入模塊少數技術描述:如何在TypeScript中的目錄中導入所有模塊?

  • 導入單個出口從一個模塊:import { ZipCodeValidator } from "./ZipCodeValidator";
  • 導入從一個模塊的單個出口和將其重命名:import { ZipCodeValidator as ZCV } from "./ZipCodeValidator";
  • 導入整個模塊: import * as validator from "./ZipCodeValidator";

我希望還有一個選項,但無處可找。是否有可能從一個給定的目錄中導入所有模塊?

我猜的語法應該或多或少是這樣的:import * from "./Converters"

+0

[打字稿1.8模塊:進口從文件夾中的所有文件]的可能的複製(http://stackoverflow.com/questions/38158429/typescript-1 -8模塊,進口全文件,從文件夾) –

回答

11

不,這是不可能的。大多數人做的是創建一個index.js文件,該文件重新導出同一目錄中的所有文件。

實施例:

my-module/ 
    a.ts 
    b.ts 
    index.ts 

a.ts

export default function hello() { 
    console.log("hello"); 
} 

b.ts

export default function world() { 
    console.log("world"); 
} 

index.ts

export { default as A } from "./a"; 
export { default as B } from "./b"; 

指數名稱可以被丟棄(相同的JavaScript):

import * as whatever from "./my-module"; 

console.log(whatever); 
// Logs: { A: [Function: hello], B: [Function: world] } 
+0

如果所有添加的文件中index.ts出口以及如何編寫測試用例? 就像如果d.ts並沒有加入到index.ts如何避免這種情況編程 – Raghavendra

+0

@Raghavendra因爲一切都是'object'一個可以簡單地遍歷鍵。像這樣:'import * as foo from「./bar」; console.log(Object.keys(foo).length)//日誌導入計數' – marvinhagemeister

+0

這不是我要求的 以上面的答案爲例,我想寫測試來檢查他們是否添加了所有a.ts,b .ts在index.ts文件中? – Raghavendra

相關問題