我最近才刚开始学习打字稿,但发现语法难以理解。我所提供的笔记不足以使我理解,所以我需要一些帮助。
在笔记中,我有两个打字稿功能:
const operationOnTwoNumbers =
(f:(x:number, y:number) => number) => // I don't understand this line
(x:number) =>
(y:number) =>
f(x,y)
function operationOnTwoNumbers(f:(x:number, y:number) => number) {
return function(x:number) {
return function(y:number) {
return f(x,y);
}
}
}
我在上面的代码中添加了一条注释。有人可以简单地解释一下我如何解释(f:(x:number,y:number) => number)
吗?
然后我也有:
type BinaryNumberFunc = (x:number, y:number) => number
type CurriedNumberFunc = (x:number) => (y:number) => number
const operationOnTwoNumbers: (f:BinaryNumberFunc) => CurriedNumberFunc
= f => x => y => f(x,y)
function operationOnTwoNumbers(f:BinaryNumberFunc):CurriedNumberFunc {
return function(x) {
return function(y) {
return f(x,y)
}
}
}
我知道operationOnTwoNumbers
的两个功能在功能上都是相似的,但是如何解释这些功能并加以区分?
我的解释方式是:
operationOnTwoNumbers
是一个将函数作为参数type BinaryNumbeFunc
的函数,而operationOnTwoNumbers
的{{1}}则将 type CurriedNumberFunc
作为参数参数并返回函数f
,并返回函数x
,然后执行操作 y
和f
上的x
中的>。
我完全无法理解打字稿,想要一些帮助来提高我对语法的理解。