我正在构建 Angular4 项目并使用 IntelliJ 。每当我创建一个新课程,然后添加 getters 和 setters 。 IDE会向字段添加下划线。
由于这种打字稿语法似乎被IDE自动识别并以这种方式创建字段,让我认为这是一种最佳实践,但我也读过这不应该这样做。
为什么IDE会这样做?我是否应该允许它为角度项目执行此操作?谢谢你的帮助!
在创建getter和setter之前
export class Test {
hello:string;
world:string;
}
创建getter和setter之后
export class Test {
private _hello:string;
private _world:string;
get hello(): string {
return this._hello;
}
set hello(value: string) {
this._hello = value;
}
get world(): string {
return this._world;
}
set world(value: string) {
this._world = value;
}
}
答案 0 :(得分:17)
getter / setter不能具有与属性名称匹配的名称 - 以下内容不起作用:
class A {
get world() {
return this.world;
}
}
因此,一般模式是仅使用下划线版本将内部属性命名为setter / getter:
class A {
get world() {
return this._world;
}
}
由于JS因此缺乏运行时封装,因此下划线通常表示内部/私有/封装的属性/变量。
但没有什么能迫使你使用下划线。如果您以不同方式命名getter / setter,则可以避免添加下划线:
class A {
get getWorld() {
return this.world;
}
}
答案 1 :(得分:1)
您可以为Settings | Editor | Code Style | TypeScript | Code Generation
,Naming conventions/Field prefix
中的字段指定不同的前缀。但请注意,将前缀留空将导致TS2300:Duplicate identifier
错误