首页 > 解决方案 > 在打字稿中动态导入类型

问题描述

我有一个文件说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

标签: typescript

解决方案


动态导入类型没有意义,因为类型是静态的——它们在编译后被消除。如果需要从要动态导入的模块中导入类型,可以单独导入类型:

import type { CommandFactory } from './MyFactory';

const Factory = await import('./MyFactory');

import type语句在编译期间被消除,因此您的模块仍将仅在运行时动态导入。


推荐阅读