Typescript 使用';导入*为';与index.ts结合使用

Typescript 使用';导入*为';与index.ts结合使用,typescript,import,module,Typescript,Import,Module,我在读一篇关于模块化角度开发的文章。我觉得它相当有用。这可以大大减少导入语句的数量。但它要求您在一行中包含所有引用的组件 所以当我们最初有 import {BusinessLogicComponent} from '../shared/ang-graph/shapes/business-logic.component'; import {BusinessLogicModel} from '../shared/ang-graph/shapes/business-logic.model'; impo

我在读一篇关于模块化角度开发的文章。我觉得它相当有用。这可以大大减少导入语句的数量。但它要求您在一行中包含所有引用的组件

所以当我们最初有

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 GraphShapes.PageReferenceModel('page1', def, 'some-prop');
我认为这在代码中更清楚,但我不确定这种方法是否有不良副作用,例如导入太多组件或

那么,这是一个好的实践吗

import * as [GroupName] from 'path/to/code/folder';

index.ts
文件结合使用
index.ts
列出代码包的“公共界面”是一个好主意


尽管从长期代码库维护的角度来看,*-import不是很好:如果是大型软件包
index.ts
,可能会包含数十个导出元素,*-import使代码更难导航


在导入特定名称的情况下,团队中的任何人都可以跟踪每个文件中导入的类/函数。

“*-导入使代码更难导航。”我不明白为什么。像WebStorm这样的IDE提供了简单的导航,可以继续使用*-导入方法。它甚至还增加了在键入“GraphShapes”时获得可用组件完整列表的好处。然后是例如ALT+SPACE来调用自动完成。同意,但我建议不要使用*-导入,原因有几个:a)不是每个人都在WebStorm上;b) 在顶部可以方便地看到所有导入的代码元素;c) 代码审查工具通常没有如此广泛的语言支持(例如,如果您的团队正在github/gitlab上进行PR审查)。
import * as [GroupName] from 'path/to/code/folder';