我刚开始学习TypeScript,我看到有很多代码使用这个sytax =>
. 我通过阅读Specification of TypeScript Version 1.6和一些谷歌搜索做了一些研究 . 我还是无法理解 =>
的含义 .
对我来说,感觉就像C中的 pointer . 但我无法确认 . 如果有人可以解释以下示例,那将是很好的 . 谢谢!
以下是我在阅读Typescript规范时发现的示例:
Object Types
var MakePoint: () => {
x: number; y: number;
};
问题:这段代码在做什么?创建一个名为 MakePoint 的对象,其中x和y字段是 number 类型?这是 MakePoint 的构造函数还是函数?
Function Types
function vote(candidate: string, callback: (result: string) => any) {
// ...
}
问题: => any
是什么意思?你必须返回一个字符串类型?
有人能用简单的英语向我解释这些例子的区别或目的吗?感谢您的时间!
7 回答
也许您将类型信息与函数声明混淆 . 如果你compile the following:
你会看到它产生:
在TypeScript中,
:
之后但=
(赋值)之前的所有内容都是类型信息 . 所以你的例子是说MakePoint的类型是一个接受0参数的函数,并返回一个具有两个属性的对象,x
和y
,两个数字 . 它没有为该变量分配函数 . 相比之下,编译:生产环境 :
请注意,在这种情况下,
=>
fat箭头位于赋值运算符之后 .在类型位置,
=>
定义一个函数类型,其中参数位于=>
的左侧,返回类型位于右侧 . 所以callback: (result: string) => any
表示“callback
是一个类型为函数的参数 . 该函数接受一个名为result
的result
参数,该函数的返回值为any
” .对于表达式级别构造,请参阅What's the meaning of "=>" (an arrow formed from equals & greater than) in JavaScript?
MakePoint
是一个变量 . 它的类型是一个不带参数并产生数字x和y的函数 . 现在箭头有意义吗?它被称为 fat arrow (因为
->
是一个细箭头,=>
是一个胖箭头),也称为lambda函数(因为其他语言) . 另一个常用功能是胖箭头功能()=>something
. 胖箭的动机是:您无需继续输入
function
.它在词汇上捕获了
this
的含义 .它在词汇上捕获了
arguments
的含义如果你在浏览器中运行这个代码,那么函数内部将指向window,因为window将执行growOld函数 . 修复是使用箭头功能:
它被称为“胖箭” . 它被添加到EcmaScript6中并替换了function关键字等 .
更多内容可以阅读here .
直接来自OP中的链接:
简单地它被用来代替匿名函数 .
以下代码
将转变为
argument => {argument.length};
为了更好地理解,请参阅以下内容:https://codecraft.tv/courses/angular/es6-typescript/arrow/