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

阅读 666
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
子站问答
访问
宣传栏