"Function Types",它们有什么区别,为什么有用?

"Function Types", What's the difference and why are they useful?

在位于 https://www.typescriptlang.org/docs/handbook/functions.html 的 TS 文档中,介绍了 "Function Types"。这个例子的代码是:

let myAdd: (x: number, y: number) => number =
    function(x: number, y: number): number { return x+y; };

"non-typed"函数在哪里

let myAdd = function(x: number, y: number): number { return x+y; };

对我来说,第一个例子中的额外语法很奇怪。为什么 return 类型有箭头函数语法?为什么有两个参数规格?

如果您不知道声明变量时的函数是什么,键入函数很有用:

let myOperation: (x: number, y: number) => number;

if ( // some condition ) {
  myOperation = function (x: number, y: number): number { return x + y; };
} else {
  myOperation = function (x: number, y: number): number { return x * y; }
}

请注意,在某些地方(例如接口),您可以使用或不使用箭头来描述类型:

interface WithoutArrow {
  operation(x: number, y: number): number;
}

interface WithArrow {
  operation: (x: number, y: number) => number;
}