class Name {
#n:number
private c :number
constructor() {
this.#n = 0
this.c = 0
}
get k():Function{
return (e: any)=>{console.log(e);
}
}
}
let name1 = new Name()
name1.k('asdasd')
name1.c
name1.#n
其中 #n
与 c
两个写法是同样作用吗
private
是个语法糖,假私有,仅仅是 TSC 代码提示上阻止你外部访问成员,你要是强行 ignore、或者已经编译成 JS 了,这个成员还是外部可访问的。#
是 ES2020 新增的特性,从底层真正支持的私有成员。不过目前还是草案,浏览器支持度不高。考虑到大部分项目都得 babel 转译成低版本语法再部署,即便
#
修饰的私有成员最后也得被转译成普通成员,所以现阶段也可以认为二者没区别。