我刚刚开始学习打字稿,我发现理解语法非常困难 . 我提供的笔记不足以澄清我的理解,所以我希望得到一些帮助 .
在我的笔记中,我有两个打字稿功能:
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
是 type CurriedNumberFunc
,它接收 f as an argument 并返回 function x ,并返回 function y 和 performs an action f
x and y.
我完全迷失了,试图理解打字稿,并想要一些帮助来提高我对语法的理解 .