web-dev-qa-db-ja.com

Typescript:メンバーのアンダースコア規約

クラスのメールがあります

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

次のようなメールオブジェクトが作成されます。

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

このオブジェクトを直接使用して関数に送信することはできないので、これは少し奇妙に思えます。代わりに、アンダースコアが含まれないようにオブジェクトを変換する必要があります。では、下線の慣例をどのように使用するか、またはオブジェクトを変換する必要がありますか。

編集: '_'をドロップした場合

下線なしでプライベート変数に名前を付ける場合、ゲッターとセッターに名前を付けるにはどうすればよいですか? TypeScriptツールボックスと呼ばれるVSCodeプラグインは、次のようなものを作成します

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

$は良い慣習ですか?

12
Jeson Dias

必要に応じてプライベート変数に名前を付けますが、_は使用しないでください。独自の標準を作成し、それに固執することができます。

セッターとゲッターは他の関数と同様なので、メソッドの命名規則に従って名前を付けることができます。

「_」をプライベートプロパティのプレフィックスとして使用しないでください。
可能な場合は、名前に単語全体を使用してください。

7
John Kennedy

プライベートフィールドのアンダースコア「_」プレフィックスは古いスタイルです。読みやすくわかりやすい方法で変数に名前を付けることをお勧めします。

Microsoft TypeScriptコーディング規約 ここ を参照してください

  1. プライベートプロパティのプレフィックスとして「_」を使用しないでください。
7
Daniel Tran

「_」を使用しないでくださいと言う人のために、T ypeScriptサイト からのコードをいくつか示します。

class Employee {
    private _fullName: string;

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

Stackoverflow についても同じ質問です。特に答えを見てください。

とりあえず、もし受け入れるなら、_を使うべきではありません。他のより良い方法は何ですか?

電子メールの例を見てみましょう。_を使用しない場合は、次のようになります。

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

あなたはもっと良い名前を考えることができるかもしれませんが、考える必要があるたびに、これは開発者の世界ではあまり一般的ではありません!

プロパティに_と同じ名前を使用すると、コードを簡単にチェックできます。そうでない場合は、どのプロパティをどのメンバーにマッピングするかを維持します。

BUT:あなたが会社のリードによって強制されている場合は、$メンバーとプロパティなしの場合、ルールではなく簡単な方法:

class Employee {
    private fullName$: string;

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

選択はあなた次第です!!!

1
Ali Adravi