我正在使用一个npm模块,该模块要求在将环境变量require
加载之前设置一个环境变量,但是直到运行时我才知道该变量的值。
我可以通过在顶部创建一个空白变量并仅在第一次需要该模块时才使用require
来延迟加载模块,但这并不能为我提供定义。
可以说我需要导入的模块名为dependency
let Dependency: any
function loadDependency(value: string)
{
process.env.REQUIRED_VALUE = value
Dependency = require("dependency")
}
//load the dependency only once we determine what required value is
loadDependency("100")
//make use of the now-imported dependency
Dependency.whatever()
我希望有一种方法可以在这种情况下为我的Dependency
变量指定类型定义,而不必为此使用any
类型。
答案 0 :(得分:0)
更新 您可以创建一个虚拟类型,如以下答案所示:https://stackoverflow.com/a/42990843
————————————————
类似的事情应该可以解决。
declare function require(moduleName: string): any;
import { ZipCodeValidator as Zip } from "./ZipCodeValidator";
if (needZipValidation) {
let ZipCodeValidator: typeof Zip = require("./ZipCodeValidator");
let validator = new ZipCodeValidator();
if (validator.isAcceptable("...")) { /* ... */ }
}
来源:https://www.typescriptlang.org/docs/handbook/modules.html
请参见
可选模块加载和其他高级加载方案