"功能类型",它们的区别和原因是什么?

时间:2017-07-22 19:34:27

标签: typescript typescript2.4

在TS文档中:https://www.typescriptlang.org/docs/handbook/functions.html,"功能类型"介绍。这样一个例子的代码是:

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

"非打字"功能是

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

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

1 个答案:

答案 0 :(得分:1)

如果您在声明变量时不知道函数是什么,则键入该函数非常有用:

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;
}