我很想探索和理解es5转化过程的打字稿。关于typescript如何使用闭包来创建作用域和管理继承这一部分我很清楚,在编译ES5中如何准确地实现私有数据成员和封装这一事实仍然令我感到惊讶,我没有看到任何区别私人和公共数据成员范围。打字稿究竟如何在内部处理隐私? 它究竟是为原型继承做什么的(var __extends)?
打字稿:
makeJSON
透明的JS:
class Shape{
private name: string;
public shapeType: string;
constructor(name , shapeType) {
this.name = name;
this.shapeType = shapeType;
}
}
class Triangle extends Shape{
constructor(name, shapeType) {
super(name , shapeType);
}
}
答案 0 :(得分:0)
成员的隐私只在打字稿本身内强制执行。所以他们只是在打字稿中是“私人的”才是为了方便。在typescript中,编译器只检查该属性是否为私有属性,但一旦转换为私有属性就是一个普通的属性。
如果您有兴趣在JS中创建私有内容,可以参考Emulating private methods with closures