typescript - Varför måste namnet på en pilfunktion vara const/let?
Jag har en tsx-fil med react-native. Mitt funktionsnamn är understruket om funktionen inte är inställd på const eller let med detta meddelande:
Kan inte hitta namnet 'goBack'
goBack = () => {
// do stuff
}
Men det fungerar om jag sätter const eller let:
const goBack = () => {
// do stuff
}
Varför?
Svar #1
Detta har inget att göra med pilfunktioner. Du försöker tilldela ett värde till en identifierare som du inte har deklarerat någonstans.
Det här :
goBack = () => {
// do stuff
}
tilldelar en pilfunktion till den redan deklarerade identifieraren goBack. (Eller, om detta vore inom en class, skulle det skapa en ny egenskap och tilldela pilfunktionen till den — men vi vet att du inte gör detta i en klass, eftersom din const-version skulle misslyckas om du gjorde det.)
Det är precis som:
answer = 42;
Om answer inte deklareras får du ett fel från TypeScript.
Det här :
const goBack = () => {
// do stuff
}
skapar en lokal variabel (nåja, konstant) och tilldelar pilfunktionen till den, precis som:
const answer = 42;
Det är bra att komma ihåg att pilfunktioner inte har någon deklarationssyntax. En pilfunktion är alltid ett uttryck. Delen till vänster om = i dina exempel är inte en del av det pilfunktionsuttrycket (även om det, något förvånande, kan påverka den funktion som skapas).
