下划线符号更改变量的可访问性

Wal*_*ite 3 javascript typescript angular

在角度我在第一个文件中有两个文件

private _test: BehaviorSubject<any> = new BehaviorSubject({});
Run Code Online (Sandbox Code Playgroud)

在第二个文件中

test$: Observable<Object> = this.test2;
Run Code Online (Sandbox Code Playgroud)

当我从_test更改第一个文件.ts变量以测试时,我遇到了错误

Property 'test' is private and only accessible within the class
Run Code Online (Sandbox Code Playgroud)

在一些文章中:

关于_的使用,也已经开发了一个约定,该约定经常被用来作为对象的私有属性或方法的名称的开头。

为什么使用下划线符号项目编译时没有错误?

Nic*_*las 5

在打字稿/ Javascript ES6中,getter的定义方式如下:

get test() : any {
    return this._test;
}
Run Code Online (Sandbox Code Playgroud)

因此,您不能同时拥有相同名称的属性和函数。
这也是为什么在生成getter / setter时,您的IDE通常会使用下划线(_)重命名该属性的原因。

您可以重命名该属性以删除下划线,将其可见性更改为public,然后删除该功能。在这两种情况下,都可以像这样访问您的财产obj.test