※ TypeScript範例說明:
interface ITest {
test1: string
test2: number
print: (arg: string[]) => boolean
}
class Test implements ITest {
public test1: string
public test2: number
constructor(test1: string, test2: number) {
this.test1 = test1
this.test2 = test2
}
print = (arg: string[]) => {
console.log(this.test1, this.test2, arg)
return Boolean(arg.length)
}
}
const testIns = new Test("hello world", 123)
console.info(testIns.print(["33"]))
※ Export介紹:
- 就是讓你可以把某些變量、函數或類別從一個模組拿出來,讓其他模組可以使用它們。這就像你把一些工具從工具箱拿出來給別人用一樣。
※ Interface(介面或是接口)介紹:
- 描述結構:interface 是用來描述物件的結構,定義了哪些Property(屬性)和Method(方法)必須存在。
- 不包含實作:interface 只描述屬性和方法,並不包含任何具體的實作細節。
- 用於約定:interface 就像是一個契約,強制實現它的 class 必須按照這個契約來實現所有的Property(屬性)和Method(方法)。否則就會發生錯誤,無法正確編譯。
簡單來說Interface 只做描述,不做動作。
※ Class介紹:
- 實作細節:class 則是具體的實現,定義了物件的具體行為和狀態。它不僅描述了物件應該有什麼樣的屬性和方法,還包括這些方法的具體實現。
- 實現 Interface:Class 使用 implements 關鍵字來指定要實作的介面(interface)。這意味著class 必須提供 interface 中定義的所有屬性和方法的具體實現。
※ Implements(實作)介紹:
- 當一個類別「implement」一個接口時,它必須提供這些方法和屬性的具體實現。
- 目的是確保類(Class)包含介面中所有定義的屬性和方法,否則 TypeScript 編譯器會報錯。
※ Public介紹:
- 如果希望屬性或方法對所有使用者完全公開時使用 public 修飾符。
- 預設值:Class 內描述的 Property(屬性) 預設是 Public。
※ Private介紹:
- private 關鍵字用來保護類裡面的一些資料或方法,使它們只能在這個類內部使用。
- 好處是確保資料或方法不會被外部的代碼任意地修改或影響。
※ Constructor介紹:
- 用於在建立類的實例時初始化物件。
- 每個類只能有一個建構函數(constructor)。
※ Print介紹:
※ Extends介紹:
- 用於表達繼承關係。
- 一個類(子類)可以繼承另一個類(父類)的屬性和方法。
- 子類可以使用父類已有的功能,還可以新增或修改自己的功能。
※ Super介紹:
當一個子類繼承自一個父類時,可以使用 super
關鍵字來調用父類的建構函數。這樣做可以初始化父類中的屬性。
※ Static介紹:
- 靜態方法:靜態方法可以直接通過類別名稱來調用,而不需要創建類的實例。
- 靜態屬性:靜態屬性是類別的屬性,所有類的實例共享這個屬性。
※ abstract
關鍵字
在一個類別(class)前使用 abstract
關鍵字時,表示這個類別是抽象類別,不能直接用來創建物件。抽象類別就像一個藍圖,它定義了一些共用的特性和行為,不能直接用來創建物件,需要用另一個具體的類來繼承這個藍圖,並實作裡面的一些方法。
※ protected
關鍵字
一個受保護的屬性可以在這個類及其子類中訪問,但不能在類的外部訪問。