typescript - 在打字稿中动态导入类型
问题描述
我有一个文件说MyFactory.ts
。文件内容如下:
export type CommandFactory = () => string[] | undefined;
export enum FactoryIds {commandFactory : 'commandFactory'}
现在我想在另一个文件(比如main.ts
)中动态导入这个文件并在其中使用 type CommandFactory
。内容main.ts
如下:
const Factory = await import('./MyFactory');
const commandFactories : Factory.CommandFactory[] = []; //Here I am getting error that Property 'CommandFactory' does not exist on type 'typeof import('MyFactory')'
虽然我可以轻松FactoryIds
通过Factory.FactoryIds
但无法CommandFactory
使用Factory.CommandFactory
. 我想知道如何在我的文件中动态导入CommandFactory
类型。main.ts
解决方案
动态导入类型没有意义,因为类型是静态的——它们在编译后被消除。如果需要从要动态导入的模块中导入类型,可以单独导入类型:
import type { CommandFactory } from './MyFactory';
const Factory = await import('./MyFactory');
import type
语句在编译期间被消除,因此您的模块仍将仅在运行时动态导入。
推荐阅读
- linux - Git 钩子没有被推送到裸存储库
- python - 在不使用for循环的情况下,用numpy优化python函数
- c - 设置二进制数等于设置掩码的其他二进制数
- c# - load static fields in class
- alfresco - Alfresco Activiti - How to modify process variables?
- sql - 如何将 sql 查询的结果保存到变量中,然后在脚本中使用它?
- html - 水平滑块 CSS 的最佳方法
- haskell - 如何卸载堆栈包
- flutter - Flutter 提供程序未更新 UI
- javascript - 使用来自 Javascript 的 ClojureScript core.async 通道