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.