Typescript的这段代码如何理解?

interface ImportMeta {
  url: string

  readonly hot?: import('./hot').ViteHotContext

  readonly env: ImportMetaEnv

  glob: import('./importGlob').ImportGlobFunction
  /**
   * @deprecated Use `import.meta.glob('*', { eager: true })` instead
   */
  globEager: import('./importGlob').ImportGlobEagerFunction
}

问题

对于glob属性:
import('./importGlob') 不是返回Promise对象吗? 怎么可以 .ImportGlobFunction?

gpt回答

image.png

阅读 665
1 个回答

原因就是这个引入在接口中,它会触发一个特性叫做 类型引入,参考官方文档的描述:
Type Only Import

原文如下:

import type only imports declarations to be used for type annotations and declarations. It always gets fully erased, so there’s no remnant of it at runtime. Similarly, export type only provides an export that can be used for type contexts, and is also erased from TypeScript’s output.

简单来说就是 类型引入 不会存在于运行时,仅作为 编译时的类型检查,不是动态引入(或者从运行层面来说甚至就没有引入),自然就不会是 promise 对象

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏