美文网首页
TypeScript中的关键字static

TypeScript中的关键字static

作者: 小棋子js | 来源:发表于2021-10-27 19:12 被阅读0次

    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

          本文链接:https://www.haomeiwen.com/subject/miupaltx.html