Typescript 什么';“的意思是什么=&燃气轮机&引用;打字稿?(胖箭头)
我刚开始学习TypeScript,我看到有很多代码使用这个sytaxTypescript 什么';“的意思是什么=&燃气轮机&引用;打字稿?(胖箭头),typescript,Typescript,我刚开始学习TypeScript,我看到有很多代码使用这个sytax=>。我通过阅读和谷歌搜索做了一些研究。我仍然无法理解=>的含义。 对我来说,C++中的“强”指针强。但我不能证实。如果有人能解释下面的例子,那就太好了。谢谢大家! 以下是我在阅读Typescript规范时发现的示例: 对象类型 var MakePoint: () => { x: number; y: number; }; function vote(candidate: string, callback
=>
。我通过阅读和谷歌搜索做了一些研究。我仍然无法理解=>
的含义。
对我来说,C++中的“强”指针<>强。但我不能证实。如果有人能解释下面的例子,那就太好了。谢谢大家!
以下是我在阅读Typescript规范时发现的示例:
对象类型
var MakePoint: () => {
x: number; y: number;
};
function vote(candidate: string, callback: (result: string) => any) {
// ...
}
问题:这段代码在做什么?创建一个名为“生成点”(MakePoint)的对象,其中x和y字段是“数字”(number)类型?这是生成点的构造函数还是函数
功能类型
var MakePoint: () => {
x: number; y: number;
};
function vote(candidate: string, callback: (result: string) => any) {
// ...
}
问题:=>任何
的含义是什么?是否必须返回字符串类型
有谁能用简单的英语向我解释一下这些例子的区别或目的吗?谢谢你抽出时间 在类型位置,
=>
定义一个函数类型,其中参数位于=>
的左侧,返回类型位于右侧。所以回调:(result:string)=>any
意味着“回调
是一个类型为函数的参数。该函数采用一个名为result
的字符串类型的参数,函数的返回值为any
”类型
有关表达式级构造,请参见它被称为“胖箭头”。它被添加到ECMAScript 6中,并替换了function关键字和其他内容
更多内容可以阅读
MakePoint
是一个变量。它的类型是一个不带参数并生成数字x和y的函数。现在箭头有意义了吗?也许你把类型信息和函数声明混淆了。如果你:
您将看到它产生:
var MakePoint;
在TypeScript中,在:
之后但在=
(赋值)之前的所有内容都是类型信息。因此,您的示例说明MakePoint的类型是一个函数,它接受0个参数并返回一个具有两个属性的对象,x
和y
,这两个属性都是数字。它不是将函数分配给该变量。相比之下,编辑:
var MakePoint = () => 1;
产生:
var MakePoint;
var MakePoint = function () { return 1; };
请注意,在这种情况下,=>
fat箭头位于赋值运算符之后。直接从OP中的链接:
在本例中,“投票”的第二个参数具有函数类型
(结果:字符串)=>任意
这意味着第二个参数是一个返回类型为“any”的函数,该函数有一个名为“result”的类型为“string”的参数
正如一位智者曾经说过的,“我讨厌JavaScript,因为它太容易失去它的意义”
它被称为胖箭头(因为->
是细箭头,=>
是胖箭头),也被称为lambda函数(因为其他语言)。另一个常用功能是胖箭头函数()=>something
。使用胖箭的动机是:
您不需要一直键入函数
它从词汇上理解了这个
的含义
它从词汇上理解了参数的含义
如果在浏览器中运行此代码,函数中的此代码将指向window,因为window将是执行growOld函数的对象。修复方法是使用箭头功能:
简单地说,它被用来代替匿名函数
下面的代码
function(argument){
return argument. Length
}
将转换为参数=>{argument.length}代码>
为了更好地理解,请参阅以下内容:
这是一个箭头功能,也称为胖箭头功能
阅读更多:
这也可能有帮助:如果MakePoint是一个函数,为什么不使用常规JavaScript函数声明呢?例如,函数MakePoint(){…}
?@ShaohaoLin它较短并且省略了名称(()=>…
),并且它保留了this
的范围,这意味着您不再需要创建var self=this
变量,或者通过函数参数传递this
。在您的var MakePoint=()=>1
示例中,如何访问属性x
和y
<第一种情况下,code>x
和y
都被认为是1
?@ShaohaoLinMakePoint
是一个函数,它返回一个具有属性x
的对象。但在第二种情况下,必须将其重写为var MakePoint=()=>({x:1,y:1})
(注意对象周围的()
),这样它会返回您想要的对象,而不是数字1(我正在使用它作为示例)。@ShaohaoLin对不起,我不明白您在添加的问题中问了什么。通常只问一个新问题要容易得多,因为你有更多的空间来解释这个问题是什么。此外,如果您稍后添加信息,这会使读者感到困惑,没有人会回来查看您的更改/新问题。因此,在这种情况下,回调是否只是函数名?@ShaohaoLin它是一个参数的名称,该参数的类型将是一个函数(但作为参数传入的任何函数的名称都可以是任何名称)这实际上是解释typescript中的胖箭头与emca中的胖箭头之间存在差异的唯一答案script@ryan,你能解释一下这是什么意思吗p=>this.people=p
second equal mark在这里做什么?是的,但是整行的意思是什么?是“p是一个变量,其类型可以是任意的,它返回这个值,其值等于p(在右边)?”?但无论如何,我还是无法理解(以上是最好的答案。
function(argument){
return argument. Length
}