如何在TypeScript中的目录中导入所有模块?

问题描述:

在打字稿handbook用于导入模块少数技术描述:如何在TypeScript中的目录中导入所有模块?

  • 导入单个出口从一个模块:import { ZipCodeValidator } from "./ZipCodeValidator";
  • 导入从一个模块的单个出口和将其重命名:import { ZipCodeValidator as ZCV } from "./ZipCodeValidator";
  • 导入整个模块: import * as validator from "./ZipCodeValidator";

我希望还有一个选项,但无处可找。是否有可能从一个给定的目录中导入所有模块?

我猜的语法应该或多或少是这样的:import * from "./Converters"

+0

[打字稿1.8模块:进口从文件夹中的所有文件]的可能的复制(http://*.com/questions/38158429/typescript-1 -8模块,进口全文件,从文件夹) –

不,这是不可能的。大多数人做的是创建一个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