Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compiler errors TypeScript:函数类型中的标识符重复_Compiler Errors_Typescript - Fatal编程技术网

Compiler errors TypeScript:函数类型中的标识符重复

Compiler errors TypeScript:函数类型中的标识符重复,compiler-errors,typescript,Compiler Errors,Typescript,尝试编译时: function foo(f: (number, number)=>boolean) {} function foo2(f: (number) => boolean) { } function foo3(f: (a: number, b: number) => boolean) { } function foo4(f: (number, string) => boolean) { } 我得到一个错误: Duplicate identifier 'nu

尝试编译时:

function foo(f: (number, number)=>boolean) {}
function foo2(f: (number) => boolean) { }

function foo3(f: (a: number, b: number) => boolean) { }

function foo4(f: (number, string) => boolean) { }
我得到一个错误:

Duplicate identifier 'number'.
为什么??我想说明的是,
f
是一个函数,它接受两个参数,每个参数类型为
number
,并返回一个
布尔值。我如何陈述

以下文件仅供参考:

function foo(f: (number, number)=>boolean) {}
function foo2(f: (number) => boolean) { }

function foo3(f: (a: number, b: number) => boolean) { }

function foo4(f: (number, string) => boolean) { }
但以下情况并非如此(它会生成完全相同的错误,
重复标识符“number”
):


您必须命名函数
f
接受的参数。这就是为什么
foo3
起作用的原因
foo2
foo4
编译,因为编译器将它们作为名称,并且因为没有类型假定为
any
类型。它们可以改写为:

function foo2(f: (number: any) => boolean) { }
function foo4(f: (number: any, string: any) => boolean) { }
当然,这是一些令人困惑的代码

记住这一点,
foo
不起作用,因为编译器认为这意味着:

function foo(f: (number: any, number: any)=>boolean) {}

是的,您有一个重复的标识符
编号

Maan,我必须命名参数吗?有什么办法吗?显然,变量名在逻辑上不是必需的。(也就是说,它们在编译时被完全擦除。)不,没有办法。好的一面是,它为任何使用您的代码的人提供了一个很好的提示。