【问题标题】:Reference a generic function without calling it (instantiation expressions)引用泛型函数而不调用它(实例化表达式)
【发布时间】:2023-01-07 00:52:08
【问题描述】:

我有以下功能:

function foo<T>(param: T){
 return 1
}

我想用一种类型来引用它:

const fooBool = foo<boolean>;

这导致错误 SyntaxError: '(' expected.

我的目标是为了防止每次我想调用函数的布尔版本时都写 foo<boolean(...) 。 问题

问题:有没有其他方法可以缩短调用函数的布尔版本的方式?

编辑:解决方案:

抛出错误是因为我使用的是 Typescript 4.6.3。

显然我的代码非常适合 Typescript 版本 >= 4.7。

编辑:问题编辑器的注释

我感谢你的努力,但是

  1. 请保持标题不变。它表达了我想要达到的目标。 IE。这种措辞可能是不知情的人可能会搜索的内容。

  2. 请不要将我的问题更改为完全不同的问题。

【问题讨论】:

  • 您的 TypeScript 版本已过时。这些被称为实例化表达式并在version 4.7 中发布。更新您的版本,错误应该消失。
  • 我认为在版本 <4.7 中不可能有这样的事情(这就是添加它的原因)。您可以使用包装器(例如(v: boolean) =&gt; foo(v))或复制foo 的类型并将通用参数替换为boolean,但仅此而已......

标签: typescript


【解决方案1】:

您应该使用类型转换:

const fooBool = foo as typeof foo<boolean>

【讨论】:

  • foo&lt;boolean&gt; 语法是在 4.7 版中引入的。在帖子下查看我的cmets。
  • 不适用于 4.6
猜你喜欢
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 2018-12-25
  • 1970-01-01
  • 2017-10-27
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
相关资源
最近更新 更多