Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 什么';“的意思是什么=&燃气轮机&引用;打字稿?(胖箭头)_Typescript - Fatal编程技术网

Typescript 什么';“的意思是什么=&燃气轮机&引用;打字稿?(胖箭头)

Typescript 什么';“的意思是什么=&燃气轮机&引用;打字稿?(胖箭头),typescript,Typescript,我刚开始学习TypeScript,我看到有很多代码使用这个sytax=>。我通过阅读和谷歌搜索做了一些研究。我仍然无法理解=>的含义。 对我来说,C++中的“强”指针强。但我不能证实。如果有人能解释下面的例子,那就太好了。谢谢大家! 以下是我在阅读Typescript规范时发现的示例: 对象类型 var MakePoint: () => { x: number; y: number; }; function vote(candidate: string, callback

我刚开始学习TypeScript,我看到有很多代码使用这个sytax
=>
。我通过阅读和谷歌搜索做了一些研究。我仍然无法理解
=>
的含义。 对我来说,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
    ?@ShaohaoLin
    MakePoint
    是一个函数,它返回一个具有属性
    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
    }