我刚刚开始学习打字稿,我发现理解语法非常困难 . 我提供的笔记不足以澄清我的理解,所以我希望得到一些帮助 .

在我的笔记中,我有两个打字稿功能:

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 的参数,而 operationOnTwoNumberstype CurriedNumberFunc ,它接收 f as an argument 并返回 function x ,并返回 function yperforms an action f x and y.

我完全迷失了,试图理解打字稿,并想要一些帮助来提高我对语法的理解 .