簡體   English   中英

打字稿:類成員初始化與 setter 和 getter

[英]Typescript: Class members initialization vs setters and getters

我有以下代碼:

export class Myclass {
   private _someVal = 2;

   public get someVal() {
      return this._someVal;
   }

   public set someVal(val) {
      this._someVal = val;
   }
}

我在模板<span>{{ someVal }}</span>使用了這個someVal

價值沒有改變。

使用 setter getter 和 setter 或簡單地let someVal = 2並直接在模板中使用它之間有什么區別嗎?

在這種特殊情況下,您所做的和正在做的沒有區別:

export class Myclass {
   someVal = 2;

}

setter 和 getter 都有用例,例如當您在設置值時需要做其他事情時,但這不是其中之一。

唯一的區別是 get/set 實現允許您具有更大的靈活性,而 public 屬性則不太靈活。

你可以用 get 做什么的例子:

export class Myclass {
   private _someVal = 2;
   private _otherVal = 1;

   public get calculatedVal() {
      return this._someVal + this._otherVal;
   }
}

然后像這樣訪問calculatedVal作為屬性: <span>{{ calculatedVal}}</span>

在一個類中,您不使用let關鍵字。

在這種情況下,使用訪問器是沒有意義的。 如果你在 set 上觸發一個動作,或者在 get 上計算值,那么使用它們是有意義的。

如果直接訪問該屬性有效,這可能是正確的解決方案。

在 Java 世界中,為 DTO 中的每個字段創建 getter/setter 是很常見的,這是否是一種反模式是有爭議的。 這種做法會泄漏到其他語言中。

經驗法則:如果您不需要訪問器,請使用屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM