javascript - typescript : underscore convention for members

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

<分区>

我有一个类(class)邮箱

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

它将创建一个类似于以下内容的电子邮件对象:

{
  _from:'',
  _to:'',
  _subject:''
}

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

编辑:如果我确实删除了“_”

如果我们命名不带下划线的私有(private)变量,如何命名 getter 和 setter?一个名为 Typescript toolbox 的 VSCode 插件创建它们是这样的

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

$ 是一个好的约定吗?

最佳答案

那些说不能使用“_”的人,对于他们来说,这里有一些代码来自 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 

也许你可以想一些更好的名字,但每次你都需要考虑,这在开发者世界中并不常见!

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

但是如果您被公司的领导强制,那么您可以在没有它的情况下使用$作为成员和属性(property);不是规则,而是简单的方法:

class Employee {
    private fullName$: string;

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

选择权在你手中!!!

关于javascript - typescript : underscore convention for members,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47747809/

相关文章:

javascript - AJAX http GET 请求

Angular 动态形式可观察输入属性始终为空

javascript - 对给定初始值的对象数组进行排序,使其始终排在第一位

reactjs - 使用 Typescript 创建 React App 中的自定义代理

javascript - 如果 QuestionID 相同,如何更新 setState 中的对象,否则添加到 setState

javascript - 类(class)员工

javascript - 滚动顶部不工作

javascript - 从服务器端调用 Javascript 代码是一种好习惯吗?

javascript - carousel 插件和 jquery 库不能一起工作

javascript - 带有模板文字但没有括号的 ES6 调用函数