TypeScrip的import()表达式允许在运行时延迟加载代码.例如,我可以调用await import('@my-app/a/b')并接收一个对象,该对象恰好具有从引用的源模块导出的成员.

这是类型安全的;类型脚本编译器在设计时根据路径知道返回的对象上有哪些成员可用.

Is there any way to wrap this 100 expression and still get back the strongly-typed object?

一个用例是,我可以在返回的对象返回给调用代码之前对其执行一些标准操作.

例如:

使用空闲加载的模块:

const module = await import('@my-app/a/b');
module.doSomething();

仅在完成标准操作后才使用延迟加载的模块:

const module = await loadAndProcessModule('@my-app/a/b');
module.doSomething();

问题是如何在不 destruct 类型安全的情况下实现或至少声明loadAndProcessModule.

推荐答案

我认为,要做到这一点,您需要能够将typeof import("module-specifier")表示为通用的.例如,您的loadAndProcessModule函数签名需要如下所示:

function loadAndProcessModule<T extends string>(moduleSpecifier: T): typeof import(T) {
   // ...
}

不幸的是,这在今天的打字脚本中是不可能的-参见this question和[此开放功能请求].

Typescript相关问答推荐

界面中这种类型的界面界面中的多态性

是否可以根据嵌套属性来更改接口中属性的类型?

Webpack说你可能需要在Reactjs项目中增加一个加载器''

更新为Angular 17后的可选链运算符&?&问题

类型脚本`Return;`vs`Return unfined;`

具有泛型类型和缺省值的键

Angular NgModel不更新Typescript

在Typescript 中,有没有`index=unfined的速记?未定义:某个数组[索引]`?

接口重载方法顺序重要吗?

为什么ESLint会抱怨函数调用返回的隐式`any`?

是否将自动导入样式从`~/目录/文件`改为`@/目录/文件`?

如何通过TypeScrip中的函数防止映射类型中未能通过复杂推理的any值

是否可以判断某个类型是否已合并为内部类型?

FatalError:Error TS6046:';--模块分辨率';选项的参数必须是:'; node ';,'; node 16';,'; node

为什么我的导航在使用Typescript的React Native中不起作用?

在Cypress中,是否可以在不标识错误的情况下对元素调用.Click()方法?

具有匹配功能的TS通用事件处理程序

在构建Angular 应用程序时,有没有办法通过CLI传递参数?

使用来自API调用的JSON数据的Angular

带有 Select 器和映射器的Typescript 泛型