簡體   English   中英

在 typescript 中為 class 賦值聲明變量的最佳方法是什么?

[英]What is the best approach to declare variable in typescript for class assignment?

我不想聲明accountHandler ,因為這any好的做法。 當您必須在構造函數中將其分配給 class 時,創建 class 變量的更好方法是什么?

主.ts

{
 private accountHandler: any= {};
 private requestLOB: string[] = [];


    constructor() {
        if (process.env.ENABLEBackendSwitch === "true") {
            this.accountHandler = new AccountBalanceHandlerV2();
        } else {
            this.accountHandler = new AccountBalanceHandler();
        }
    }

而不是any你可以使用AccountBalanceHandlerV2 | AccountBalanceHandler AccountBalanceHandlerV2 | AccountBalanceHandler 但實際上你甚至不需要設置類型,因為 TypeScript 會根據你在構造函數中分配給它的值來為你推斷值(只要你刪除默認分配):

class A {
  private accountHandler;


  constructor() {
    if (process.env.ENABLEBackendSwitch === "true") {
      this.accountHandler = new AccountBalanceHandlerV2();
    } else {
      this.accountHandler = new AccountBalanceHandler();
    }
  }
}

accountHandler被推斷為AccountBalanceHandlerV2 | AccountBalanceHandler AccountBalanceHandlerV2 | AccountBalanceHandler

Typescript 實際上會推斷在構造函數中初始化的字段類型。 所以如果你沒有任何注解,它會被推斷出來。

class X {
    private accountHandler;
//           ^?  X.accountHandler: AccountBalanceHandlerV2 | AccountBalanceHandler
    constructor() {
        if (process.env.ENABLEBackendSwitch === "true") {
            this.accountHandler = new AccountBalanceHandlerV2();
        } else {
            this.accountHandler = new AccountBalanceHandler();
        }
    }
}

游樂場鏈接

但最好的做法是明確說明類型:

class X {
    private accountHandler: AccountBalanceHandlerV2 | AccountBalanceHandler
    constructor() {
        if (process.env.ENABLEBackendSwitch === "true") {
            this.accountHandler = new AccountBalanceHandlerV2();
        } else {
            this.accountHandler = new AccountBalanceHandler();
        }
    }
}

游樂場鏈接

暫無
暫無

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

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