angular - varför att lägga till nyckelordet `let` eller `var` gör koden okompilerbar
I följande komponentklass, om jag lägger till let-nyckelordet, kompileras inte koden. Varför?
export class HelloComponent {
@Input() name: string;
name2:string;//let name2:string doesn't compile.
constructor(){
}
}
Svar #1
let och var krävs/endast tillåts för lokala variabler, inte för klassfält.
export class HelloComponent {
@Input() name: string;
name2:string;//let name2:string doesn't compile.
constructor(){
var x = 5; // ok
let y = 5; // ok
const z = 5; // ok
}
}
I en klass utanför en metod (eller konstruktor) är endast variabelinitiering och metoddeklaration tillåtna, därför är let överflödigt och därför inte tillåtet.
Svar #2
För att du är i en klass :
export class HelloComponent
I en klass deklarerar du egenskaper/medlemmar som kommer att vara åtkomliga på detta sätt
let hello = new HelloComponent();
console.log(hello.name2); // In your case, shows "undefined"
Detta är en objektegenskap.
För var och let skapar du block-skopade variabler: det är variabler som försvinner när du lämnar den kodblock du befinner dig i, såsom en funktion.
