我有一个使用es 16模块的TypeScript应用程序,大部分模块都是静态导入的。现在我想使用一个只在调试模式下导入的(validator-)模块。它可以正常工作,但我不知道如何输入东西,以便获得代码完成和错误检查。
在 main. ts 主类中,我有:
...
if(debug){
import('./validator.js').then((module) => this.validate(module))
}
...
validate* 方法如下所示:
private validate(module):void{
new module.Validator(dataToValidate);
}
validator.js包含:
export class Validator{
coonstructor(data:MyDatatype){
stuff going on here...
}
}
我想知道/做的是:
在 validate 方法中:
private validate(module:someMeaningfulType){...}
我还想导入Validator类,但实际上并没有导入它。如果我写
import {Validator} from './validate.ts'
在 main.ts 的顶部,我会加载文件,而不管我是否需要它,这完全破坏了动态导入的意义。
我可能会尝试在main.ts中为 module 和 Validator 编写一个类型声明,但即使这不会发生冲突,我也必须手动使其与实际模块保持同步,这显然不是我想要的。
我可能错过了一些明显的东西,但我找不到是什么。我发现很难搜索原生es 2020/2022模块与Typescrit的(纯粹)使用,因为有这么多关于节点模块等的信息掩盖了它。
1条答案
按热度按时间jjhzyzn01#
实际上,您可以将
import
与typeof
一起使用,以获取导入模块的类型:或者,您可以使用仅类型导入,它将在输出中被删除: