class Animal {
private name:string;
public Firstname:string;
constructor(theName: string)
{
this.name = theName;
this.Firstname=theName;
}
}
class Tiger {
function sample(){
Animal animalName=new Animal('Tiger');
document.body.innerHTML = animalName.name;
}
sample();
}
Run Code Online (Sandbox Code Playgroud)
你是动物类中这个typeScript的新手我已经创建了一个私有变量名,我在类构造函数中使用它.在类Tiger中我创建了Animal类的实例,并且能够访问该私有变量.
我的问题是在java中,如果我们这样做,我们将得到错误.但是在typeScript中(因为typescript支持oops)我们没有得到任何错误而且它给出了值如何可能?
Ami*_*mid 23
首先 - 你的代码不会编译.Typescript将检查名称的可访问性并给出错误.在打字稿操场上检查自己:操场
第二 - 如果要删除打字稿检查,则可以访问私有属性,例如:
console.log((<any>animalName).name)
Run Code Online (Sandbox Code Playgroud)
这是因为本机javascript没有私有属性(私有属性)的概念.由于打字稿被编译为javascript,你有这样的可能性.
Ole*_*ich 10
使用as anyAmid 发布的技巧的另一种方法是使用字符串索引表示法,这是一种用于访问私有成员的有意逃生舱口:
console.log(animalName['name']);
Run Code Online (Sandbox Code Playgroud)
这具有类型安全的优点,因此如果您删除name,您将在此处收到编译器错误。
| 归档时间: |
|
| 查看次数: |
5394 次 |
| 最近记录: |