[英]using variable to static method in nodejs and typescript
我有一個類,這個類我需要使用靜態方法,在該方法中我使用變量,但它顯示了這個錯誤:
類型 'typeof Wallet'.ts 上不存在屬性 'ec'
我不需要設置靜態那個變量。
我怎樣才能解決這個問題?
export class Wallet {
ec: any;
constructor() {
this.EC = elliptic.ec;
this.ec = new this.EC('secp256k1');
}
static verifySignuture(address: string, data: any, signature: any): boolean {
const keyfromPublic = this.ec.keyFromPublic(address, 'hex');
return keyfromPublic.verify(Utility.GenerateHash(data), signature);
}
}
如何解決這個問題?
Javascript 類 != 此類的一個實例。
將類想象為由其中的字段定義的某種形狀。 您可以使用new
關鍵字實例化此形狀。 在javascript(打字稿)中,您可以將類的實例分配給變量。 例如
const myWallet = new Wallet();
然后你可以將另一個實例分配給另一個變量
const someOtherWallet = new Wallet();
在這種情況下myWallet
和someOtherWallet
具有相同的shape
,但有兩個相同形狀(類)的單獨實例。 通過使用static
詞,您將形狀的字段分配給形狀本身而不是構造實例。 因此,如果您的方法是靜態的,您需要調用MyClass.myMethod()
而不是調用this.myMethod()
MyClass.myMethod()
- 在您的情況下Wallet.verifySignature()
。 區別在於this
詞。 它代表您在代碼的特定部分中操作的 javascript 上下文。 您可以在此處找到更多相關信息。 類的non-static
方法的優點是能夠在這些方法中訪問this
上下文。 如果您不需要訪問this
您可以繼續使用靜態方法。 在第一種情況下(當我將Wallet
類的新實例分配給名為myVallet
的局部變量時, this context
(在Wallet
類中)等效於名為myVallet
的變量,但不同之處在於您要訪問它的位置。在您的如果您嘗試在verifySignature
方法中訪問this
上下文,這是錯誤的,因為在類的靜態方法中, this
上下文不是您的類的實例。而是在方法聲明之前刪除static
關鍵字並嘗試如下操作:
const wallet = new Wallet();
const signatureVerified = wallet.verifySignature(address, data, signature);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.