在 TypeScript 中獲取類名

Migel Hewage Nimesha 2023年1月30日
  1. TypeScript 類和物件
  2. 在執行時獲取 TypeScript 物件的型別
  3. TypeScript 物件的建構函式
在 TypeScript 中獲取類名

舊 JavaScript 更傾向於函數語言程式設計。隨著作為 JavaScript 超集 TypeScript 的發展,它開始支援物件導向的程式設計功能。

物件導向程式設計背後的基本術語是程式由互動的現實世界實體組成。

TypeScript 類和物件

TypeScript 支援帶有 class 概念的物件導向程式設計。類是用於建立類例項的真實世界實體的藍圖。

TypeScript 類是從 ES6 引入的。一個類由欄位、方法和建構函式組成。

class Animal {
    // properties/fields
    name: string;
    color: string;

    // constructor
    constructor(name: string) {
        this.name = name;
    }

    // methods/functions
    eat(): void {
        console.log("I am eating");
    }
}

這些欄位被定義為儲存 Animal 物件的名稱和顏色。TypeScript 建構函式用於初始化物件的屬性。

它是一個可以引數化的特殊函式,如上例所示。

有了 Animal 類,就可以從中建立物件。TypeScript 使用 new 關鍵字從給定的類建立新物件。

由於 TypeScript 是一種強型別語言,新的 Animal 例項的型別將是 Animal 型別。

let dog: Animal = new Animal('rocky');

如你所見,建立 Animal 例項時已呼叫 Animal 類的建構函式。Animal 類建構函式接受一個字串引數,我們必須在建立物件時傳遞它。

在執行時獲取 TypeScript 物件的型別

在某些情況下,你需要在執行時知道 TypeScript 物件的型別。假設我們有一個名為 Vehicle 的類。

class Vehicle {
    vehicleNo: string;
    vehicleBrand: string

    constructor(vehicleNo: string, vehicleBrand: string) {
        this.vehicleNo = vehicleNo;
        this.vehicleBrand = vehicleBrand;
    }
}

讓我們建立一個新的 Vehicle 物件,miniCar

let miniCar: Vehicle = new Vehicle('GH-123', 'AUDI');

miniCarvehicle 物件,其型別是 Vehicle。我們可以使用該類的 name 屬性檢查特定類的名稱。

語法:

<class_name>.name

讓我們檢查類 Vehicle 的名稱。

console.log(Vehicle.name);

輸出:

Vehicle

TypeScript 物件的建構函式

如前所述,每個 TypeScript 類都包含一個建構函式,該建構函式可能是程式設計師編寫的自定義建構函式或預設建構函式。它是一種特殊型別的 TypeScript 函式。

因此,我們可以獲得對物件的 constructor 函式的引用。

語法:

Object.constructor

讓我們獲取對 miniCar 物件的建構函式的引用,如下所示。

let miniCarConstructorRef: any = miniCar.constructor;

接下來,我們將把 miniCarConstructorRef 變數值記錄到控制檯。

[Function: Vehicle]

正如預期的那樣,它引用了 miniCar 物件的建構函式。

TypeScript 允許你使用 name 屬性獲取物件的建構函式名稱。

語法:

Object.constructor.name

讓我們使用上面的語法來獲取 miniCar 物件的類名。

let classNameOfTheObject = miniCarConstructorRef.name;

最後,我們將把 classNameOfTheObject 變數值記錄到控制檯。

console.log(classNameOfTheObject);

輸出:

Vehicle

這是檢查物件所屬類的推薦方法。

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

相關文章 - TypeScript Class