簡體   English   中英

在nodejs和打字稿中使用變量到靜態方法

[英]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();

在這種情況下myWalletsomeOtherWallet具有相同的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.

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