Wat is de betekenis van “=>” in typoscript? (Vette pijl)

Ik ben net begonnen TypeScript te leren en ik zag dat er veel code is die deze sytax =>gebruikt. Ik heb wat onderzoek gedaan door de Specificatie van TypeScript versie 1.6en wat googlen. Ik begrijp nog steeds de betekenis van =>niet.

Voor mij voelt het als een aanwijzerin C++. Maar ik kan het niet bevestigen. Als iemand de volgende voorbeelden kan uitleggen, zou dat geweldig zijn. Bedankt!

Hieronder staan ​​enkele voorbeelden die ik vond toen ik de specificatie van Typescript aan het lezen was:

Objecttypen

var MakePoint: () => {  
    x: number; y: number;  
};

Vraag: Wat doet deze code? Een object maken met de naam MakePoint, waarbij de velden x en y van het type nummerzijn? Is dit een constructor of een functie voor MakePoint?

Functietypen

function vote(candidate: string, callback: (result: string) => any) {  
 // ...  
}

Vraag: Wat is de betekenis van => any? Moet je een stringtype teruggeven?

Kan iemand mij het verschil of het doel van deze voorbeelden in gewoon Engels uitleggen? Bedankt voor je tijd!


Antwoord 1, autoriteit 100%

Misschien verwar je type-informatie met een functiedeclaratie. Als je compileer het volgende:

var MakePoint: () => {x: number; y: number;};

je zult zien dat het produceert:

var MakePoint;

In TypeScript is alles wat na de :komt maar vóór een =(toewijzing) de type-informatie. Dus je voorbeeld zegt dat het type MakePoint een functie is die 0 argumenten nodig heeft en een object retourneert met twee eigenschappen, xen y, beide getallen. Het wijst geen functie toe aan die variabele. Compileren daarentegen:

var MakePoint = () => 1;

produceert:

var MakePoint = function () { return 1; };

Houd er rekening mee dat in dit geval de dikke pijl =>na de toewijzingsoperator komt.


Antwoord 2, autoriteit 28%

In een typepositie definieert =>een functietype waarbij de argumenten links van de =>staan ​​en het retourtype rechts. Dus callback: (result: string) => anybetekent “callbackis een parameter waarvan het type een functie is. Die functie heeft één parameter nodig met de naam resultvan het type string, en de retourwaarde van de functie is van het type any“.

Zie voor de constructie op expressieniveau Wat is de betekenis van “=>” (een pijl gevormd uit is gelijk aan & groter dan) in JavaScript?


Antwoord 3, autoriteit 22%

var MakePoint: () => {  
    x: number; y: number;  
};

MakePointis een variabele. Het type is een functie die geen argumenten nodig heeft en de getallen x en y produceert. Heeft de pijl nu zin?


Antwoord 4, autoriteit 17%

Zoals een wijs man ooit zei: “Ik haat JavaScript omdat het de betekenis hiervan maar al te gemakkelijk verliest”.

Het wordt de dikke pijlgenoemd (omdat ->een dunne pijl is en =>een dikke pijl is) en ook een lambda-functiegenoemd (vanwege andere talen). Een andere veelgebruikte functie is de dikke pijlfunctie ()=>something. De motivatie voor een dikke pijl is:

  1. Je hoeft functionniet te blijven typen.
  2. Het geeft de betekenis van thislexicaal weer.
  3. Het geeft lexicaal de betekenis weer van arguments

function Person(age) {
this.age = age;
this.growOld = function() {
    this.age++;
  }
}
var person = new Person(1);
setTimeout(person.growOld,1000);
setTimeout(function() { console.log(person.age); },2000); // 1, should have been 2

Als je deze code in de browser uitvoert, zal deze binnen de functie naar window verwijzen, omdat window de growOld-functie zal uitvoeren. Oplossing is om een ​​pijlfunctie te gebruiken:


function Person(age) {
this.age = age;
this.growOld = () => {
    this.age++;
  }
}
var person = new Person(1);
setTimeout(person.growOld,1000);
setTimeout(function() { console.log(person.age); },2000);// 2

Antwoord 5, autoriteit 6%

Het wordt een “dikke pijl” genoemd. Het is toegevoegd in EcmaScript6 en vervangt onder andere het functie-sleutelwoord.

Meer kan hierworden gelezen.


Antwoord 6, autoriteit 3%

Direct via de link in OP:

In dit voorbeeld heeft de tweede parameter voor ‘vote’ het functietype

(resultaat: string) => ieder
wat betekent dat de tweede parameter een functie is die het type ‘any’ retourneert met een enkele parameter van het type ‘string’ genaamd ‘result’.


Antwoord 7

Het is gewoon gebruikt in plaats van anonieme functies.

De onderstaande code

function(argument){
return argument. Length
}

wordt getransformeerd naar argument => {argument.length};

Raadpleeg voor een beter begrip het onderstaande:
https://codecraft.tv/courses/angular/es6-typescript/arrow/


Antwoord 8

Het is een pijlfunctie, ook wel Fat Arrow-functie genoemd.

Lees meer:
voer hier de linkbeschrijving in

Other episodes