"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;
}
在位于 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;
}