【问题标题】:TypeScript doesn't seem to allow higher-order function argument genericsTypeScript 似乎不允许高阶函数参数泛型
【发布时间】:2023-03-10 02:33:01
【问题描述】:

我在我的 TypeScript 代码中遇到了一个奇怪的问题,导致它退出编译并出现以下错误:

src/mutable_list.ts(47,25): 1005 ',' expected.

我要编译的代码如下:

44  export function flatMap<V,I,W,J>(
45    list: IMutableList<V,I>,
46    getFn: (V) => IList<W,J>,
47    setFn: (IList<W,J>) => V
48  ): IMutableList<W,J> {
49    return null;
50  }

当我命名setFn的内部函数参数时,它确实有效,如下所示:

47    setFn: (list: IList<W,J>) => V

我觉得这很奇怪。我不知道为什么它特别不适用于泛型参数。我宁愿不必命名我所有的内部函数参数。

谁能弄清楚这里的问题是什么?我在 TypeScript 中遇到错误了吗?

【问题讨论】:

    标签: generics typescript higher-order-functions


    【解决方案1】:

    我认为您这里有语法错误。函数类型文字中的每个参数仍然必须命名,例如你必须说(something: IList&lt;W, J&gt;) =&gt; V

    如果您只是将类型放在那里,它会被视为具有隐式任何类型的参数名称。在您的情况下,参数名称不能包含 &lt; 因此解析器失败。

    【讨论】:

    • 啊,所以他们必须被命名。这确实有道理。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    相关资源
    最近更新 更多