Typescript的这段代码如何理解?

作者站长头像
站长
· 阅读数 5
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回答

Typescript的这段代码如何理解?

回复
1个回答
avatar
test
2024-06-25

原因就是这个引入在接口中,它会触发一个特性叫做 类型引入,参考官方文档的描述: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 对象

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容