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