如何从TypeScript中的目录导入所有模块?
在TypeScript中,介绍了几种导入模块的技术:如何从TypeScript中的目录导入所有模块?,typescript,Typescript,在TypeScript中,介绍了几种导入模块的技术: 从模块导入单个导出:Import{ZipCodeValidator}来自“/ZipCodeValidator” 从模块导入单个导出并将其重命名:Import{ZipCodeValidator as ZCV}from“/ZipCodeValidator” 导入整个模块:Import*作为来自“/ZipCodeValidator”的验证器 我希望还有一个选择,但我找不到。是否可以从给定目录导入所有模块 我猜语法应该大致如下:import*fr
- 从模块导入单个导出:
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?我明白了。我不知道有哪种解决方案能够可靠地比较导出。我们可以编写一个函数,对目录进行全局化,并将其与导出的函数进行比较,但这总是有点脆弱,特别是因为您可以使用不同的名称导出内容。如果您和您的团队在命名方面有足够的纪律性,那么我前面评论中的解决方案将完全做到这一点。@marvinhagemesisterexport*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] }