为什么这两种打字稿中的函数类型不同?

时间:2017-09-13 00:51:50

标签: function typescript types typescript-2.5

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

myNumber = input("Guess the number from 1 to 50: ")

我认为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

使用Typescript版本2.5.2

1 个答案:

答案 0 :(得分:3)

let a: (number)=>number

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

let a: (number: any)=>number

换句话说,第一个number在这里定义一个名为&#34的参数;数字"

你需要的是,

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

名称x并不重要。