typescript - 将“import * as”与 index.ts 结合使用
问题描述
我正在阅读一篇关于在模块化 Angular 开发中使用 index.ts 文件的文章。我发现它相当有用。这可以大大减少导入语句的数量。但它要求您将所有引用的组件包含在一行中。
所以当我们最初有
import {BusinessLogicComponent} from '../shared/ang-graph/shapes/business-logic.component';
import {BusinessLogicModel} from '../shared/ang-graph/shapes/business-logic.model';
import {PageReferenceComponent} from '../shared/ang-graph/shapes/page-reference.component';
import {PageReferenceModel} from '../shared/ang-graph/shapes/page-reference.model';
import {RestRequestComponent} from '../shared/ang-graph/shapes/rest-request.component';
import {RestRequestModel} from '../shared/ang-graph/shapes/rest-request.model';
我们可以将其减少到
import {BusinessLogicComponent, BusinessLogicModel, PageReferenceComponent, PageReferenceModel, RestRequestComponent, RestRequestModel} from '../shared/ang-graph/shapes';
但这给出了很长的代码行,实际上并不可读。
所以我想知道是否可以将上述简化的导入语句替换为例如:
import * as GraphShapes from '../shared/ang-graph/shapes';
这使所有内容再次变得更具可读性,另外还可以更好地了解代码中组件的来源。
所以
const pageRef = new PageReferenceModel('page1', def, 'some-prop');
会成为
const pageRef = new GraphShapes.PageReferenceModel('page1', def, 'some-prop');
我认为这在代码中更清楚,但我不确定这种方法是否有不好的副作用,例如导入太多组件或......
那么,这是一个使用的好习惯吗
import * as [GroupName] from 'path/to/code/folder';
结合index.ts
文件?
解决方案
使用index.ts
列出代码包的“公共接口”是个好主意。
尽管从长期代码库维护的角度来看 *-imports 并不是那么好:在大型包index.ts
可能包含数十个导出元素的情况下,*-import 会使代码导航变得更加困难。
如果您导入特定名称 - 团队中的任何人都可以跟踪在每个文件中导入了哪些类/函数。
推荐阅读
- reactjs - 如何将函数作为道具传递给 React 函数组件?
- python - 将多列合并为 Pandas 数据框中的新行
- java - 如何限制我的域对象中的集合
- python - 确保变量在任何给定时间仅处于一种状态
- mongodb - MongoDB 将不同集合中的两个属性合并为一个并对它们进行排序
- javascript - 我正在创建一个可过滤的灯箱画廊。过滤器/按钮适用于灯箱,但按钮不会更改网站本身的图像
- python - 为什么 pop() 函数会更改字典的列表值,但 capitalize() 不能更改字符串值的大小写?
- python - numpy 函数 np.linspace 抛出值错误
- react-native - React-native-firebase 电话身份验证
- wagtail - 如何在可订购片段中获取类别值