TypeScript 是 JavaScript 的一個超集,它添加了可選的靜態類型和基于類的面向對象編程。在 TypeScript 中,類是一種模板,用于創建對象。通過類,你可以封裝對象的屬性(數據)和方法(函數)。TypeScript 的類與 JavaScript ES6+ 中的類非常相似,但增加了類型安全特性。
定義一個類
在 TypeScript 中,你可以使用 class
關鍵字來定義一個類。以下是一個簡單的例子:
class Greeter {greeting: string;constructor(message: string) {this.greeting = message;}greet() {return "Hello, " + this.greeting;}
}let greeter = new Greeter("world");
console.log(greeter.greet()); // 輸出: Hello, world
在這個例子中,Greeter
是一個類,它有一個屬性 greeting
和一個構造函數,構造函數接收一個字符串參數并將其賦值給 greeting
屬性。greet
方法是一個實例方法,它返回一個包含問候語的字符串。
訪問修飾符
TypeScript 支持三種訪問修飾符:public
、protected
和 private
,它們用于控制類成員(屬性和方法)的訪問權限。
public
(默認):任何地方都可以訪問。protected
:只能被類本身及其子類訪問。private
:只能被類本身訪問。
繼承
TypeScript 支持類的繼承,允許你基于一個類來創建另一個類。子類繼承父類的屬性和方法,并可以添加新的屬性和方法或覆蓋父類的方法。
class Animal {name: string;constructor(theName: string) { this.name = theName; }move(distanceInMeters: number = 0) {console.log(`${this.name} moved ${distanceInMeters}m.`);}
}class Dog extends Animal {bark() {console.log(`${this.name} says Woof!`);}
}const myDog = new Dog("Buddy");
myDog.move(5);
myDog.bark(); // 輸出: Buddy moved 5m. 和 Buddy says Woof!
在這個例子中,Dog
類繼承自 Animal
類,并添加了一個新的 bark
方法。
靜態屬性和方法
靜態成員(屬性和方法)屬于類本身,而不是類的實例。你不需要創建類的實例就可以訪問靜態成員。
class MathUtils {static sum(a: number, b: number): number {return a + b;}
}console.log(MathUtils.sum(1, 2)); // 輸出: 3
在這個例子中,sum
是一個靜態方法,可以直接通過類名 MathUtils
調用,而不需要創建類的實例。
通過這些基本概念,你可以開始使用 TypeScript 編寫面向對象的程序了。