为什么添加关键字`let`或`var`会使代码无法编译

时间:2017-12-14 10:07:02

标签: angular typescript

在下面的组件类中,如果我添加let关键字,则代码不会编译。为什么呢?

export class HelloComponent {
  @Input() name: string;
  name2:string;//let name2:string doesn't compile.

  constructor(){

  }
}

2 个答案:

答案 0 :(得分:4)

letvar仅对局部变量是必需的/允许的,而不是类字段。

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
  }
}

在方法(或构造函数)之外的类中,只允许变量初始化和方法声明,因此let是多余的,因此不允许。

答案 1 :(得分:3)

因为你在课堂上:

export class HelloComponent 

在类中,您声明可以像这样访问的属性/成员

let hello = new HelloComponent();
console.log(hello.name2); // In your case, shows "undefined"

这是对象属性

对于varlet,您可以创建块范围的变量:这些变量将在您离开您所在的代码块后死亡,例如:一个功能。