[英]What is the best approach to declare variable in typescript for class assignment?
我不想聲明accountHandler
,因為這any
好的做法。 當您必須在構造函數中將其分配給 class 時,創建 class 變量的更好方法是什么?
{
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.