【问题标题】:Is there a way I can import types using a generic parameter?有没有办法可以使用泛型参数导入类型?
【发布时间】:2022-06-16 19:49:10
【问题描述】:

我有一个功能有点像动态import() 语法的包装器:

async importWrapper(url) {
  return await import(url);
}

有没有办法让这个函数使用基于 url 参数值的返回类型?

我试过了:

async function importWrapper<T extends string>(url: T) : Promise<typeof import(T)> {
    return await import(url);
}

但这会报错:

Promise<typeof import(T)>
//                   ^^^--- TS1141 String literal expected

playground

【问题讨论】:

  • 别以为有办法做到这一点
  • @TitianCernicova-Dragomir ????
  • 目前不可能,ms/TS#44663 有一个功能请求。这是否解决了这个问题?如果是这样,我可以写一个(简短的!)答案。如果没有,我错过了什么?
  • @jcalz 啊,谢谢!我一直在尝试在错误跟踪器中寻找功能请求,但没有遇到这个。随意写一个答案!

标签: typescript import


【解决方案1】:

至少从 TypeScript 4.6 开始,无法表达 import(T)typeof import(T) 等形式的“import 类型”。

microsoft/TypeScript#44636 有一个开放的功能请求,请求支持类似的东西。它目前被标记为“等待反馈”,这意味着他们希望在考虑采用此类功能之前了解社区的想法。所以你可能想给这个问题一个?并评论你的用例;特别是为什么你需要这个以及为什么现有的解决方法不够用。

在任何情况下,我都不希望看到任何实施很快,甚至永远不会。 TS 的开发负责人A comment 表示,这将是一个“繁重的任务”。哦,好吧!

【讨论】:

  • 谢谢!我已经在那里发布了我的用例。不确定他们是否会做很多事情,只有时间会证明一切。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多