为什么在作业的左侧不允许“这个”

时间:2016-06-23 06:47:17

标签: typescript angular

在组件类中,我一直在写这个:

export class myapp{
  detail;

  myarr = ['me', 'myself', 'i'];
  title = this.myarr[0];
  this.detail = this.title ;  //error
}

为什么不允许this.detail但是允许this.title,为什么我必须创建新变量,我不能在类中使用变量

2 个答案:

答案 0 :(得分:0)

在类中,但在方法之外,您只能初始化字段或声明方法。你不能在那里添加任意语句。

您可以使用constructor()

export class myapp{
  detail : string = 'I am';

  myarr = ['me', 'myself', 'i'];
  title = this.myarr[0];
  constructor() {
    this.detail = this.title ;  
  }
}

答案 1 :(得分:0)

在你的实例中,没有必要重新声明类成员......

export class myapp{
    myarr = ['me', 'myself', 'i'];
    title = this.myarr[0];
    detail = this.title ;
}

为什么TypeScript会这样做?

TypeScript帮助您发现您可能无意中声明了第二个具有相同名称的成员,阻止您执行您正在尝试的操作。

您还会注意到,您不需要为班级中的成员使用this前缀。生成的JavaScript会有它们......

var myapp = (function () {
    function myapp() {
        this.myarr = ['me', 'myself', 'i'];
        this.title = this.myarr[0];
        this.detail = this.title;
    }
    return myapp;
}());

您可以在成员前添加访问修饰符。它们默认是私有的。

export class myapp{
    private myarr = ['me', 'myself', 'i'];
    protected title = this.myarr[0];
    public detail = this.title ;
}

访问修饰符仅在编译时强制执行。