在我的打字稿中,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'..
答案 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 创建。