Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从TypeScript中的目录导入所有模块?_Typescript - Fatal编程技术网

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

如何从TypeScript中的目录导入所有模块?,typescript,Typescript,在TypeScript中,介绍了几种导入模块的技术: 从模块导入单个导出:Import{ZipCodeValidator}来自“/ZipCodeValidator” 从模块导入单个导出并将其重命名:Import{ZipCodeValidator as ZCV}from“/ZipCodeValidator” 导入整个模块:Import*作为来自“/ZipCodeValidator”的验证器 我希望还有一个选择,但我找不到。是否可以从给定目录导入所有模块 我猜语法应该大致如下:import*fr

在TypeScript中,介绍了几种导入模块的技术:

  • 从模块导入单个导出:
    Import{ZipCodeValidator}来自“/ZipCodeValidator”
  • 从模块导入单个导出并将其重命名:
    Import{ZipCodeValidator as ZCV}from“/ZipCodeValidator”
  • 导入整个模块:
    Import*作为来自“/ZipCodeValidator”的验证器
我希望还有一个选择,但我找不到。是否可以从给定目录导入所有模块


我猜语法应该大致如下:
import*from“/Converters”

不,这是不可能的。大多数人所做的是创建一个
index.js
文件,重新导出同一目录中的所有文件

例如:

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

b、 ts

索引

export { default as A } from "./a";
export { default as B } from "./b";
您可以使用
*
字符以单行重新导出模块的每次导出。请注意,如果已导出同名成员,则TypeScript将出错(感谢@haysclark提供的提示)

可以删除索引名(与javascript中相同):


如果所有添加的文件也在index.ts中导出,如何编写测试用例?比如,如果一个d.ts和未添加到index.ts,如何避免这种情况programmatically@Raghavendra因为所有东西都是
对象
,所以可以简单地在键上迭代。类似于:
import*作为来自“/bar”的foo;console.log(Object.keys(foo.length)//logs import count
这不是我要问的,以上面的答案为例,我想写一个测试来检查他们是否在index.ts文件中添加了所有的a.ts,b.ts?我明白了。我不知道有哪种解决方案能够可靠地比较导出。我们可以编写一个函数,对目录进行全局化,并将其与导出的函数进行比较,但这总是有点脆弱,特别是因为您可以使用不同的名称导出内容。如果您和您的团队在命名方面有足够的纪律性,那么我前面评论中的解决方案将完全做到这一点。@marvinhagemesister
export*from“/somePath”可能值得添加到您的答案中:D可能重复的
export default function world() {
  console.log("world");
}
export { default as A } from "./a";
export { default as B } from "./b";
export * from "./somePath";
import * as whatever from "./my-module";

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