在 TypeScript 中,static 关键字用于定义类的静态成员。静态成员是那些属于类本身,而不是类的实例的成员。你可以直接通过类来访问静态成员,而不需要创建类的实例。
以下是一个使用 static 关键字的例子:
class MyClass {
static myStaticProperty = "Hello, world";
static myStaticMethod() {
return "Hello, world";
}
}
在这个例子中,MyClass 类有一个静态属性 myStaticProperty 和一个静态方法 myStaticMethod。你可以直接通过 MyClass 类来访问这些静态成员:
console.log(MyClass.myStaticProperty); // "Hello, world"
console.log(MyClass.myStaticMethod()); // "Hello, world"
静态成员在很多情况下都很有用。例如,你可以使用静态属性来存储类的全局状态,或者使用静态方法来创建工具函数。
上面说到了实例 那么类的实例是什么呢 什么是实例
class Grid {
static origin = {x: 0, y: 0};
calculateDistanceFromOrigin(point: {x: number; y: number;}) {
let xDist = (point.x - Grid.origin.x);
let yDist = (point.y - Grid.origin.y);
return Math.sqrt(xDist * xDist + yDist * yDist) / this.scale;
}
constructor (public scale: number) { }
}
let grid1 = new Grid(1.0); // 1x scale
let grid2 = new Grid(5.0); // 5x scale
console.log(grid1.calculateDistanceFromOrigin({x: 10, y: 10}),grid1);
console.log(grid2.calculateDistanceFromOrigin({x: 10, y: 10}),grid2);
类的实例是通过使用 new 关键字和类的构造函数创建的对象。每个实例都有其自己的属性和方法,这些属性和方法是根据类的定义来创建的。
在代码中,Grid 是一个类,它有一个静态属性 origin,一个方法 calculateDistanceFromOrigin,和一个构造函数。
在这个例子中,grid1 和 grid2 都是 Grid 类的实例。它们都有自己的 scale 属性和 calculateDistanceFromOrigin 方法。scale 属性的值是在创建实例时通过构造函数传入的,calculateDistanceFromOrigin 方法是根据 Grid 类的定义来创建的。