我正在使用Typescript构建一个包含100个独立ts文件的大型库.以前我使用导出模块XXX(稍后重命名为导出命名空间XXX)用于我的所有类,但正如书中所说,这不是推荐的方式,我应该使用import.
所以我尝试导入.这工作得很好:
import * as mylib from "./source/source.ts";
Run Code Online (Sandbox Code Playgroud)
但由于我有100个文件,我不想为所有这些文件添加这样的行.我想通过mylib变量访问所有类.
所以我尝试了这个:
import * as mylib from "./source/";
Run Code Online (Sandbox Code Playgroud)
但是一旦我这样做,我得到:找不到模块'./source/'
有没有办法从一个包含多行文件的文件夹中导入所有类?
希望能够components直接从目录导入目录中的任何组件components。
当前的目录结构是:
\nsrc\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 components\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Camera.tsx\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Keyboard.tsx\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 index.ts\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 screens\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 App.tsx\nRun Code Online (Sandbox Code Playgroud)\n并希望能够按如下方式导入:
\nsrc\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 components\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Camera.tsx\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Keyboard.tsx\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 index.ts\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 screens\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 App.tsx\nRun Code Online (Sandbox Code Playgroud)\n第一个选择显然是维护一长串导出列表src/components/index.ts:
// src/screens/App.tsx\n\nimport { Keyboard } from \'../components\'\nRun Code Online (Sandbox Code Playgroud)\n然而,这维护起来很麻烦。有没有一种方法使用glob导出对象来自动导出所有组件,或者可能有另一种方式一起导出?
如果项目的大多数目录包含不超过2-3个TypeScript文件,并且在将包含目录导入其他位置时应该可以访问它们的所有导出,则会导致许多index.ts文件具有可预测的内容.
目录: my-component
my-component-config.ts
my-component.ts
index.ts
Run Code Online (Sandbox Code Playgroud)
什么index.ts包含?当然,它包含
export * from "./my-component-config"
export * from "./my-component"
Run Code Online (Sandbox Code Playgroud)
这是显而易见的.
对于10个组件目录,这意味着:10个index.ts文件包含100%冗余信息.
如何让TypeScript(/ Node)隐式创建index.ts文件,不需要存储在硬盘上?
typescript ×3
javascript ×2
directory ×1
import ×1
node-modules ×1
node.js ×1
react-native ×1
reactjs ×1