具有路径变量类型的TypeScript动态导入

时间:2020-02-26 11:16:52

标签: typescript

我有一个TS文件目录,我在配置对象中指定此目录的路径。然后,我使用readdirSync来抓取所有文件并对其进行循环,实例化并将实例添加到对象中。下面是内部循环:

  const path = join(config.path, file); // file = foo.js
  const className = pascalCase(basename(file, ".js")); // Foo
  type ModuleType = typeof import(path); // uh-oh
  const File = await import(path);
  const Obj = File[className]; // [Function: Foo]
  someObj.handlers[className] = new Obj();

尝试设置typeof导入时出现TS错误:

[ts]应为字符串文字。 [ts]“路径”是指一个值,但此处被用作类型。

我可以做些什么来告诉TS我正在导入和实例化的类吗?我知道它是因为我将变量用作path

1 个答案:

答案 0 :(得分:0)

您正在运行时动态创建它。这些类型在运行时没有意义。

如果要在运行时为要构造的对象进行设计时智能感知,则必须编写matricule来手工描述它。

如果您不知道形状,则不需要类型信息。