打字稿:成员的下划线约定

时间:2017-12-11 06:56:47

标签: javascript typescript ecmascript-6 typescript2.0 es6-class

我有一个班级电子邮件

class Email {
  private _from: string;
  private _to: Array<string>;
  private _subject: string;
}

它会创建一个类似于:

的电子邮件对象
{
  _from:'',
  _to:'',
  _subject:''
}

这对我来说似乎有点奇怪,因为我无法直接使用此对象发送到函数。相反,我必须转换对象,使其没有下划线。那么我如何使用下划线约定或者我必须转换对象。

编辑:如果我放弃了&#39; _&#39;

如果我们将私有变量命名为不带下划线,如何命名getter和setter?一个名为Typescript工具箱的VSCode插件会创建类似这样的

public get $subject(): string { 
  return this.subject;
}

$是一个很好的约定吗?

3 个答案:

答案 0 :(得分:8)

说的人一定不要使用“ _”,对于他们来说,这是TypeScript site中的一些代码:

class Employee {
    private _fullName: string;

    get fullName(): string {
        return this._fullName;
    } 
    this._fullName = ......
}

关于Stackoverflow的相同问题,您应该对此有一个了解,尤其是答案。

目前,如果被接受,我们不应该使用_,那么还有什么更好的方法呢?

让我们以您的电子邮件示例为例,如果我们不使用_,那么我们将收到类似这样的信息:

member: to,      get/set: emailTo
member: from     get/set: emailFrom 

也许您可以想到一个更好的名字,但是每次您需要考虑时,这在开发人员世界中并不常见!

为属性使用_和相同的名称很容易检查代码,否则我们将继续将哪个属性映射到哪个成员。

但是::如果您被公司的潜在客户强迫,则可以使用$作为成员和财产,而不必使用它;不是规则而是简单的方法:

class Employee {
    private fullName$: string;

    get fullName(): string {
        return this.fullName$;
    } 
    this.fullName$ = ......
}

选择由您决定!

答案 1 :(得分:5)

只需根据需要命名您的私人变量,但不要使用_。您可以创建自己的标准并坚持下去。

Setter和getter与任何其他函数一样,因此您可以按照方法命名约定来命名。

  

请勿使用&#34; _&#34;作为私人财产的前缀。
  尽可能在名称中使用整个单词。

答案 2 :(得分:4)

私人字段的下划线“_”前缀是过时的样式。最好将变量命名为可读且友好的方式。

请参阅Microsoft Typescript编码约定here

  
      
  1. 请勿使用“_”作为私有属性的前缀。
  2.