【问题标题】:typescript accessor naming convention打字稿访问器命名约定
【发布时间】:2019-03-11 19:39:02
【问题描述】:

Extending this answer

如果我从上面的答案中 jsonize 示例对象:

JSON.stringify(obj)

那么我的输出是:

{"_id":"3457"}

假设我想通过服务发送它并将其转储到数据库,我不希望字段名称为“_id”。我也不想在保存时对字段名称进行大量翻译。

所以我的问题是什么是访问器的良好命名约定以获得更好的属性名称?没有什么我能想到的不会杀死访问器快捷方式。

例子:

private id: number;

public get g_id(): number {
    return this.id;
}

public set s_id(value: number) {
    this.id = value;
}

【问题讨论】:

  • 如果你的 getter/setter 只返回该字段,不要使用 rpoerty,只需使用该字段。
  • @TitianCernicova-Dragomir 对于显然是一个例子的问题,这不是一个非常迟钝的答案吗?
  • @DouglasGaskell 这是评论,而不是答案。我经常看到来自 Java/C# 的人编写没有额外逻辑的属性,这是那些生态系统中的常见模式(有充分的理由),但在 JS 中不是常见模式。我只是指出它以防 OP 不知道这一点。可能会说得更好:)
  • @TitianCernicova-Dragomir 够公平的。谢谢你的解释。

标签: typescript naming-conventions


【解决方案1】:

我能想到两个选择:

  1. 不要使用JSON.stringify,而是编写自己的方法来翻译字段名称。例如:

    public myStringify(): string {
        return JSON.stringify({id: this._id});
    }
    

    如果您愿意,您可以编写一些循环遍历Object.keys(this) 的代码,而不是手动编写代码来重命名每个字段。

  2. 通过使用单独的对象来保存实际字段,并在该对象上调用JSON.stringify,避免访问器和实际字段之间的名称冲突。

【讨论】:

    【解决方案2】:

    Type-Aware JSON Parser & Serializer

    @devzero 在我不久前问的另一个问题中给了我这个选项,这个库的初始使用非常棒。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 2021-02-01
      • 2021-10-27
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多