Nhảy tới nội dung

Static field (static field)

Trong Java và PHP có khái niệm static field. Field thông thường là property của instance, nhưng static field là property của class. Trong Java và PHP có thể khai báo static field bằng từ khóa static.

Java
java
class SomeClass {
public static Integer field = 123;
}
class Main {
public static void main(String[] args) {
System.out.println(SomeClass.field); //=> 123
}
}
Java
java
class SomeClass {
public static Integer field = 123;
}
class Main {
public static void main(String[] args) {
System.out.println(SomeClass.field); //=> 123
}
}
PHP
php
class SomeClass
{
public static $field = 123;
}
var_dump(SomeClass::$field); //=> int(123)
PHP
php
class SomeClass
{
public static $field = 123;
}
var_dump(SomeClass::$field); //=> int(123)

JavaScript và TypeScript cũng có thể khai báo static field bằng từ khóa static.

TypeScript
ts
class SomeClass {
static field: number = 123;
}
console.log(SomeClass.field);
123
TypeScript
ts
class SomeClass {
static field: number = 123;
}
console.log(SomeClass.field);
123

Type inference cho static field

Static field của TypeScript được suy luận kiểu từ giá trị khởi tạo nếu có giá trị khởi tạo. Do đó có thể bỏ qua type annotation cho field.

ts
class SomeClass {
static field = 123;
}
ts
class SomeClass {
static field = 123;
}

Static field và access modifier

Static field của TypeScript có thể kết hợp với access modifier.

ts
class SomeClass {
private static field: number;
}
ts
class SomeClass {
private static field: number;
}

📄️ Access modifier

Trong các ngôn ngữ như Java hay PHP, có thể chỉ định private, protected, public cho field và method. JavaScript cũng có spec Private class fields để thực hiện property kiểu private, nhưng hơi khác với access modifier kiểu Java. TypeScript có access modifier theo phong cách Java.

Static field chỉ đọc

Static field của TypeScript trở thành chỉ đọc khi thêm readonly modifier.

ts
class SomeClass {
static readonly field: number;
}
ts
class SomeClass {
static readonly field: number;
}

📄️ Readonly modifier trong class

Trong TypeScript, thêm readonly modifier cho field để biến field đó thành chỉ đọc.