TypeScript 似乎不允许高阶函数参数泛型

TypeScript doesn't seem to allow higher-order function argument generics

我 运行 在我的 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 中遇到了错误吗?

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

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