如何从打字稿中的静态方法中获取价值?

时间:2018-01-18 05:12:00

标签: typescript typescript2.0

在我的打字稿中,static中添加了一个方法。后来我试着打电话。但是在编译代码时得到错误......我的代码有什么问题吗?任何人都可以帮助我理解static中的typescript属性?

这是我的代码:

class Car { 
    private distanceRun: number = 0;
    color: string;

    constructor(public hybrid:boolean, color:string="red") {
        this.color = color;
    }

    getGasConsumption():string { 
        return this.hybrid ? "Low" : "High";
    }

    drive(distance:number) {
        return this.distanceRun += distance;
    }

    static horn():string {
        return "HOOONK!";
    }

    get distance():number {
        return this.distanceRun;
    }

}

let newCar = new Car(false);
console.log(newCar.color);
console.log(newCar.horn()); //shows error as Property 'horn' does not exist on type 'Car'..

Live

1 个答案:

答案 0 :(得分:3)

静态成员未附加到类的实例。他们与班级本身联系在一起。

你需要通过类调用静态方法和属性,而不是它的内容 - 就像这样Car.horn()

<强> Live example

你可以看到,

class Test {
   get() { 

   }

   static getStatic() {

   }
}

编译成了这个

function Test() {

}

Test.prototype.get = function () {

};

Test.getStatic = function () {

};

很明显,getStatic位于Test本身,而get位于Test的原型中,将从对象引用,通过Test function-constructor 创建。