想要在 typescript 中扫描一个目录, 然后导入该目录下的所有文件, 但是这样的话, 文件路径是运行时确定的, 有什么办法吗?
1
azh7138m 2019-02-16 18:20:11 +08:00 via Android
按照 js 的模式,就 require ;
或者做 code generate ?文件在打包的时候就要确定有哪些文件 |
2
VDimos 2019-02-16 18:21:29 +08:00 via Android
用 webpack 才能实现,和 js 一样,用 import + async 或者 require 实现
|
3
menyakun 2019-02-16 19:03:05 +08:00
import('./dir/' + filename).then(...) webpack 会帮你好这件事,但这样的话这个目录下所有文件都会打包到 bundle 里面
|
6
azh7138m 2019-02-16 19:43:58 +08:00 via Android
@Sparetire 那没有必要强类型,或者说这里强类型的意义何在。。。
加载路由肯定是框架做的吧,控制器算业务的吧,按道理也不会耦合,用 any 就行,或者直接当 baseController 用就行吧 |
7
vghdjgh 2019-02-16 19:54:55 +08:00
ES static import 必须是确定的模块路径,ES dynamic import 还不被 nodejs 默认支持( Experimental https://nodejs.org/dist/latest-v11.x/docs/api/esm.html ),所以默认只能用 require,需要类型信息的话用 as 来标注
|
8
momocraft 2019-02-16 19:58:54 +08:00
文件名都不知道類型自然更不知道
你仍然可以 require, 只是 require 得到的東西自己解決類型 |
9
Sparetire OP @azh7138m emm, 好像也是...那就这样吧
只是想自己拿着 koa 照着 egg 撸一下, koa 不帮我加载路由咯 |
11
azh7138m 2019-02-16 20:36:46 +08:00 via Android
哦,想错了,node 上面文件还没加载进来,忽略我吧
|
12
VDimos 2019-02-16 20:46:39 +08:00 via Android
静态类型必须在编译时确定,没有指定路径是无法确定的,所以不能实现你的需求
|
13
thomaspaine 2019-02-17 00:50:53 +08:00
@Sparetire require 会丢类型,但是你需要批量 require 的地方,比如统一注册路由信息,需要类型信息吗?
|