ts private 疑惑

typeScript 中的 private : 私有,只能被其定义所在的类访问。

runoob 教程给的demo

class Encapsulate { 
   str1:string = "hello" 
   private str2:string = "world" 
}
 
var obj = new Encapsulate() 
console.log(obj.str1)     // 可访问 
console.log(obj.str2)   // 编译错误, str2 是私有的

运行把demo

img

虽然编译器提示,属性“str2”为私有属性,只能在类“Encapsulate”中访问。但是浏览器还是打印了私有属性

js没有类型,也没有private一说。ts的类型检查只有在将 ts 编译为 js 的时候才会有,而 ts 本身又是 js 的超集,所以它还是拦不住你直接访问。