我是否需要使用";“进口类型”;如果我的所有导入都来自我自己的文件,那么TypeScript 3.8的功能是什么?

我是否需要使用";“进口类型”;如果我的所有导入都来自我自己的文件,那么TypeScript 3.8的功能是什么?,typescript,import,module,elision,typescript3.8,Typescript,Import,Module,Elision,Typescript3.8,我有一个简单的文件types.ts,它定义了一些类型: export interface MyInterface { // ... } export const enum MyEnum { // ... } export type MyType = { // ... } 我已经阅读了有关最新typescript的新功能导入类型。据我所知,这是为了解决特定的问题,这似乎主要发生在从.js文件导入时 我可以使用import和import type语句导入我的类型。这两种方法似乎

我有一个简单的文件
types.ts
,它定义了一些类型:

export interface MyInterface {
   // ...
}

export const enum MyEnum {
   // ...
}

export type MyType = {
  // ...
}
我已经阅读了有关最新typescript的新功能
导入类型
。据我所知,这是为了解决特定的问题,这似乎主要发生在从.js文件导入时

我可以使用
import
import type
语句导入我的类型。这两种方法似乎都同样有效。问题是我应该更喜欢
导入类型
,因为它更明确,帮助我避免一些理论上的边缘案例问题,还是我可以简单地使用
导入
,并依靠
导入省略
从编译代码中删除它们

换句话说:在这里使用
导入类型
有什么好处吗?或者应该在特定情况下使用它来解决
导入省略
的缺点?

简短回答:通过使用
导入类型
导出类型
语句更加明确,似乎可以通过防止边缘案例问题,以及通过类型定义分析为当前和即将推出的工具提供更好的基础,以提高处理性能和可靠性

长答覆:

比如说:

导入类型
仅导入用于类型批注和声明的声明它总是被完全擦除,因此在运行时没有剩余部分。类似地,导出类型仅提供可用于类型上下文的导出,并且也从TypeScript的输出中擦除

以下是两个实际示例,说明这些残余导入如何在生成或运行时导致错误:

  • 与奇怪类型相关的网页错误由
    import type
    语句修复,一篇博客文章:
  • 关于
另一个好处与分析类型定义的工具有关。目前有关于使用Babel的捆绑机设置的好处的详细信息,但目前或以后可能也会有其他工具的好处(如IDE性能)

对于Babel用户手动配置其设置:如果您在TS 3.8=>的捆绑机设置中使用Babel 7.9=>,那么您可以删除以前需要的
@Babel/plugin transform typescript
插件

对于那些使用预构建巴别塔预设的设置:巴别塔的团队建议配置巴别塔预设,以便使用显式类型导入

在博客文章中阅读更多信息:

更多关于TS文档的相关信息

详细了解使用
isolatedModules
TS编译器选项的好处和工作方式