0

使用打字稿,我发现为什么分配给不同局部变量的两个不同函数会导致不同的签名。我认为一个更明确。

let a: (number)=>number =
  function(x: number): number {return 42;};

let z = function(x:number): number { return 42; };

> .type a
let a: (number: any) => number
> .type z
let z: (x: number) => number

我认为a这只是一个更明确的写作版本z,但不知何故,它被输入得更自由地接受了any

使用 Typescript 2.5.2 版

4

1 回答 1

3
let a: (number)=>number

参数名称是必需的。这完全等同于:

let a: (number: any)=>number

也就是说,number这里的第一个定义了一个名为“number”的参数

你需要的是,

let a: (x: number)=>number =
  function(x: number): number {return 42;};

名字,x无所谓。

于 2017-09-13T01:06:47.643 回答