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