在组件类中,我一直在写这个:
export class myapp{
detail;
myarr = ['me', 'myself', 'i'];
title = this.myarr[0];
this.detail = this.title ; //error
}
为什么不允许this.detail但是允许this.title,为什么我必须创建新变量,我不能在类中使用变量
答案 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 ;
}
访问修饰符仅在编译时强制执行。