尝试创建一个静态函数可以访问属性xdate,该属性在构造函数中初始化(在typescript 1.5.3中)。
this.xdate可在所有其他实例方法中访问。 它在静态方法中仍然无法访问。
Q值。无论如何我可以在静态方法中访问this.xdate吗?
以下是我的代码: -
class vehicle{
constructor(private xdate = new Date()){}
vroom(){ console.log(this.xdate); }
static staticvroom(){ console.log(this.xdate);} //Warning: Property 'xdate' does not exist on type 'typeof vehicle'.
}//vehicle ends
let v1 = new vehicle;
v1.vroom(); //works
vehicle.staticvroom(); //undefined
/* this is how i executed it:-
D:\js\Ang2\proj2\myforms\tsc_cRAP>tsc 7_.ts
7_.ts(18,42): error TS2339: Property 'xdate' does not exist on type 'typeof vehicle'.
D:\js\Ang2\proj2\myforms\tsc_cRAP>node 7_.js
2017-06-23T09:17:41.365Z
undefined
*/
任何指针都会有很大的帮助。 (如果这是一个重复的问题,请提前道歉)
/ * UglyHack#1:因为静态方法甚至在对象实例之前都可用,所以我创建了一个tmp obj。在staticvroom(){}中,它起作用了。
static staticvroom(){
console.log((new vehicle).xdate);
}
不确定性能问题。
* /
答案 0 :(得分:3)
您需要将实例作为参数传递
class Vehicle {
constructor(private xdate = new Date()) {}
vroom(){
console.log(this.xdate);
}
static staticVar: Date = new Date();
static staticvroom(vehicle: Vehicle) {
console.log(vehicle.xdate);
console.log(this.staticVar); // You can even access static vars with this
}
}// vehicle ends
let v1 = new Vehicle;
v1.vroom(); // works
Vehicle.staticvroom(v1);