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

时间:2013-07-04 17:31:15

标签: compiler-errors typescript

尝试编译时:

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

我收到错误:

Duplicate identifier 'number'.

为什么呢?我打算陈述的是f是一个函数,它接受两个参数,每个参数类型为number,并返回boolean。我该怎么说呢?

供参考,以下编译:

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

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

function foo4(f: (number, string) => boolean) { }

但是以下内容没有(它生成完全相同的错误,Duplicate identifier 'number'):

function foo5(f: (number, number[]) => boolean) { }

1 个答案:

答案 0 :(得分:3)

您必须为函数f所接受的参数命名。这就是foo3工作的原因。 foo2foo4编译,因为编译器将这些作为名称,因为没有类型假定any类型。它们可以改写为:

function foo2(f: (number: any) => boolean) { }
function foo4(f: (number: any, string: any) => boolean) { }

当然这是一些令人困惑的代码。

考虑到这一点foo不起作用,因为编译器认为这意味着:

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

是的,你有一个重复的标识符number