了解打字稿语法

时间:2018-08-10 01:48:50

标签: typescript currying

我最近才刚开始学习打字稿,但发现语法难以理解。我所提供的笔记不足以使我理解,所以我需要一些帮助。

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

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 ,然后执行操作 yf上的x中的>。

我完全无法理解打字稿,想要一些帮助来提高我对语法的理解。

0 个答案:

没有答案