TypeScript中的關鍵字static


TypeScript中的關鍵字static

ES6中的靜態成員在TypeScript也存在,類的靜態成員可以使用類名.變量名的形式訪問,不需要創建類的實例。

例如,在ts中

class Circle {
    static pi: number = 3.14;
}

上面的Circle包含靜態屬性pi,可以使用Circle.pi訪問,ts會將上面的代碼編譯成如下js文件

var Circle = /** @class */ (function () {
    function Circle() {
    }
    Circle.pi = 3.14;
    return Circle;
}());

因此可以將上面的ts代碼理解為,在Circle對象上增加一個屬性pi

靜態與非靜態同時存在

class Circle {
    pi: number = 12;// 普通變量
    static pi: number = 3.14;// 靜態變量
    
    // 普通方法
    calculateArea(radius:number):number { 
        // 此處this是指`Circle`的實例化對象
        return this.pi * Circle.pi * radius;
    }
    // 靜態方法
    static calculateArea(radius:number) {
        // 此處this並不是實例化后的this,而是將`Circle`本身視為一個對象,因此`this.pi`的結果是3.14
        return this.pi * radius * radius;
    }
}
console.log(Circle.pi); // 返回 3.14
console.log(Circle.calculateArea(5)); // 返回 78.5

const circle = new Circle();
console.log(circle.pi); // 返回 12
console.log(circle.calculateArea(5));// 返回 300 (12 * 5 * 5)

上面的例子並不會報錯,ts雖然允許這種寫法,但是並不推薦,容易產生視覺上的混淆。

參考文獻

TypeScript - Static


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM