当前位置: 首页 > 知识库问答 >
问题:

为什么在Angular4中将下划线添加到typescript类的字段中?

夏锐藻
2023-03-14

我正在构建一个Angular4项目,并使用IntelliJ。每当我创建一个新类,然后添加getter和setter时。IDE向字段添加下划线。

由于typescript语法似乎可以被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;
  }
}

共有1个答案

冯鸿光
2023-03-14

getter/setter的名称不能与属性名称匹配-以下操作将不起作用:

class A {
   get world() {
      return this.world;
   }
}

因此,一般的模式是将内部属性命名为setter/getter,就像setter/getter一样,只使用下划线的版本:

class A {
   get world() {
      return this._world;
   }
}

由于JS和TS缺乏运行时封装,下划线通常表示内部/私有/封装的属性/变量。

但没有任何东西迫使您使用下划线。如果以不同的方式命名getter/setter,则可以避免添加下划线:

class A {
   get getWorld() {
      return this.world;
   }
}   
 类似资料:
  • 问题内容: 我正在使用wtforms(和flask)生成动态表单。我想向正在生成的字段中添加一些自定义的CSS类,但是到目前为止,我一直无法这样做。使用在这里找到的答案,我尝试使用自定义小部件来添加此功能。它的实现方式与该问题的答案几乎完全相同: 在View中,我这样做是为了创建字段(ClassedTextField是从表单导入的,而f是基本表单的实例): 表单的其余部分均已正确创建,但此jinj

  • 问题内容: 我有一个示例类,如下所示: 稍后,当我尝试这样做时: 我收到一条错误消息,说名称字段不存在。为什么? 问题答案: 因为 类型 的变量是(在 运行时类型 的的 对象 ,在所述变量是实现匿名类的这也是一个 亚型 的)… …并且该类型没有该成员。因此,出现编译错误。(请记住,该变量可以包含符合的任何对象,即使没有的对象也是如此,因此编译器会拒绝不是类型安全的代码。) 编辑:对于一种解决方案,

  • 错误: 代码: 自<代码>列表

  • 问题内容: 我正在做一个redux教程,并且看到这样的呼叫: 在其他地方定义为: 下划线是什么“ _”?为什么使用它? 问题答案: 这是私有方法和变量的约定。在JavaScript中,没有类的真正隐私。 这意味着您不应在对象之外使用这些方法(以“ ” 开头)。从技术上当然可以,但是“ ”表示您不应该这样做。

  • 问题内容: 有人可以向我解释为什么在JDK 7中添加了此功能以及它如何工作吗? 在浏览JDK 7的新功能时,我发现了以下代码。 问题答案: 这用于对数字中的数字进行分组(例如信用卡等) 从Oracle网站: 在Java SE 7和更高版本中,数字文字中数字之间的任意位置都可以出现任何数量的下划线字符(_)。例如,此功能使您可以将数字文字中的数字组分开,这可以提高代码的可读性。 例如,如果您的代码包

  • 在Laravel 5.0中,这样的代码用于名称调整/加载类: 然而,我在Laravel 5.1中看到了这一点 我的问题是:与此相比,此有什么好处,我应该在何时将附加到类名? 有任何地方我可以找到这个PHP留档?