TypeScript:類

一、基本概念

TypeScript 類是基于 ES6 類的語法擴展,增加了類型注解和訪問修飾符等特性,提供了更強大的面向對象編程能力。

二、基本語法

class Person {name: string;age: number;constructor(name: string, age: number) {this.name = name;this.age = age;}greet() {return `Hello, my name is ${this.name}`;}
}

三、類的主要特性

1. 訪問修飾符

  • public?(默認):成員在任何地方都可訪問

  • private:只能在類內部訪問

  • protected:可在類及其子類中訪問

class Animal {public name: string;private secret: string;protected age: number;
}

2. 只讀屬性

class Person {readonly birthDate: Date;
}

3. 參數屬性

簡化屬性聲明和賦值的語法:

class Person {constructor(public name: string, private age: number) {}// 等同于聲明name和age并在構造函數中賦值
}

4. 存取器 (getters/setters)

class Employee {private _salary: number;get salary(): number {return this._salary;}set salary(newSalary: number) {if (newSalary >= 0) {this._salary = newSalary;}}
}

5. 靜態成員

class Grid {static origin = { x: 0, y: 0 };static calculateDistance(point: {x: number, y: number}) {// ...}
}

6. 抽象類

abstract class Animal {abstract makeSound(): void; // 必須在派生類中實現move(): void {console.log("moving...");}
}

7. 類與接口

類可以實現接口:

interface ClockInterface {currentTime: Date;setTime(d: Date): void;
}class Clock implements ClockInterface {currentTime: Date = new Date();setTime(d: Date) {this.currentTime = d;}
}

四、繼承

class Animal {move(distance: number = 0) {console.log(`Moved ${distance}m`);}
}class Dog extends Animal {bark() {console.log("Woof! Woof!");}
}

五、方法重寫

class Animal {move(distance: number = 0) {console.log(`Moved ${distance}m`);}
}class Snake extends Animal {move(distance: number = 5) {console.log("Slithering...");super.move(distance);}
}

六、高級特性

1. 類類型

類既可以作為值使用,也可以作為類型使用:

class Greeter {greeting: string;constructor(message: string) {this.greeting = message;}
}let greeter: Greeter = new Greeter("world");

2. 構造函數類型

class Point {x: number;y: number;
}let PointConstructor: typeof Point = Point;
let point: Point = new PointConstructor();

3. 裝飾器 (實驗性特性)

@sealed
class Greeter {greeting: string;constructor(message: string) {this.greeting = message;}@enumerable(false)greet() {return "Hello, " + this.greeting;}
}

七、與ES6類的區別

  1. TypeScript類有類型注解

  2. 支持訪問修飾符(public/private/protected)

  3. 支持抽象類和抽象方法

  4. 支持參數屬性

  5. 支持接口實現檢查

八、最佳實踐

  1. 優先使用private/protected限制成員訪問

  2. 考慮使用抽象類定義通用行為

  3. 合理使用接口來定義類的公共契約

  4. 對于簡單的數據對象,考慮使用接口而不是類

TypeScript的類提供了強大的面向對象編程能力,同時保持了JavaScript的靈活性,是構建大型應用的理想選擇。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905590.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905590.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905590.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

搶購Python代碼示例與技術解析

引言:搶購系統的技術挑戰 在當今電子商務高度發達的時代,搶購活動已成為各大電商平臺吸引用戶的重要手段。然而,高并發、低延遲的搶購場景對系統設計提出了嚴峻挑戰。本文將提供一個完整的Python搶購代碼示例,并深入分析其技術實…

實戰分析Cpython逆向

Cpython逆向 Python代碼轉換為C代碼的時候,將會大大增加框架代碼量。 1、正向py->c 先有正向,再有逆向 pip install cython 寫一個簡單的pyx文件 .pyx 文件是由 Cython 編程語言 "編寫" 而成的 Python 擴展模塊源代碼文件 print(&qu…

Modbus轉IEC104網關(三格電子)

產品概述 Modbus轉IE104網關型號SG-TCP-IEC104,是三格電子推出的工業級網關(以下簡稱網關),主要用于Modbus RTU/TCP/ASCII數據采集、DLT645-1997/2007數據采集,可接多功能電力儀表、溫控儀、電表等,將采集…

智能工具協同賦能STEM教育科研|探索LLM大語言模型和數學軟件Maple的創新實踐

LLM 與 Maple:開啟 STEM 教育科研新范式 在當今數字化浪潮下,教育與科研領域正面臨著前所未有的變革機遇。大語言模型(LLM)的橫空出世,為知識生成、問題求解等帶來了全新思路;而數學軟件 Maple 以其強大的…

專項智能練習(定義判斷)_DA_01

1. 單選題 熱傳導是介質內無宏觀運動時的傳熱現象,其在固體、液體和氣體中均可發生。但嚴格而言,只有在固體中才是純粹的熱傳導,在流體(泛指液體和氣體)中又是另外一種情況,流體即使處于靜止狀態&#xff0…

pandas讀取pymysql和解析excel的一系列問題(版本不匹配)

pandas讀取pymysql和解析excel的一系列問題,大部分都是版本不匹配導致的 尤其是pandas,numpy,pymysql,openpyxl不匹配導致 from sqlalchemy import create_engine import numpy as np import pandas as pd conncreate_engine("mysqlpymysql://user:passhost:3…

【中級軟件設計師】網絡攻擊(附軟考真題)

【中級軟件設計師】網絡攻擊(附軟考真題) 目錄 【中級軟件設計師】網絡攻擊(附軟考真題)一、歷年真題二、考點:網絡攻擊1、拒絕服務攻擊(DoS攻擊)2、重放攻擊3、特洛伊木馬4、網絡監聽5、SQL注入…

20250515配置聯想筆記本電腦IdeaPad總是使用獨立顯卡的步驟

20250515配置聯想筆記本電腦IdeaPad總是使用獨立顯卡的步驟 2025/5/15 19:55 百度:intel 集成顯卡 NVIDIA 配置成為 總是用獨立顯卡 百度為您找到以下結果 ?要將Intel集成顯卡和NVIDIA獨立顯卡配置為總是使用獨立顯卡,可以通過以下步驟實現?&#xff…

【C++ | 內存管理】C++ 智能指針 std::shared_ptr 詳解及使用例子代碼

😁博客主頁😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客內容🤑:🍭嵌入式開發、Linux、C語言、C、數據結構、音視頻🍭 🤣本文內容🤣&a…

【CF】Day59——Codeforces Round 914 (Div. 2) D

D. Set To Max 題目: Easy 思路: 簡單題 由于題目的數據給的很小,所以我們可以用 n 的復雜度過,那我們來觀察一下我們應該怎么操作 顯然,如果 a[i] > b[i] 時是無法構造的,同時 a[i] b[i] 時就不用管…

解密企業級大模型智能體Agentic AI 關鍵技術:MCP、A2A、Reasoning LLMs- GPT源代碼解析

解密企業級大模型智能體Agentic AI 關鍵技術:MCP、A2A、Reasoning LLMs- GPT源代碼解析 我們可以稍微看一下, 這是我們GPT的基于它的源代碼產生的可視化的內容。 這邊是model ,我們在談這個sampling的時候,本身首先就是說它這個probability distribution ,會有很多的參數…

AI 推理 | vLLM 快速部署指南

本文是 AI 推理系列的第一篇,近期將更新與 vLLM 的相關內容。本篇從 vLLM 的部署開始,介紹 vLLM GPU/CPU 后端的安裝方式,后續將陸續講解 vLLM 的核心特性,如 PD 分離、Speculative Decoding、Prefix Caching 等,敬請關…

Python-MCPInspector調試

Python-MCPInspector調試 使用FastMCP開發MCPServer,熟悉【McpServer編碼過程】【MCPInspector調試方法】-> 可以這樣理解:只編寫一個McpServer,然后使用MCPInspector作為McpClient進行McpServer的調試 1-核心知識點 1-熟悉【McpServer編…

Linux 常用命令 -hostnamectl【主機名控制】

簡介 hostnamectl 命令中的 “hostname” 顧名思義,指的是計算機在網絡上的名稱,“ctl” 是 “control” 的縮寫,意味著控制。hostnamectl 命令用于查詢和修改系統主機名以及相關的設置。它通過與 systemd 系統管理器交互,允許用…

力扣-二叉樹-101 對稱二叉樹

思路 分解問題為,該節點的左孩子的左子樹和右孩子的右子樹是不是同一棵樹 && 該節點的左孩子的右字數和右孩子的左子樹是不是同一課樹 && 該節點的左右孩子的值相不相同 代碼 class Solution {public boolean isSymmetric(TreeNode root) {// 層…

Nginx技術方案【學習記錄】

文章目錄 1. 需求分析1.1 應用場景1.2 實現目標 2. Nginx反向代理與實現均衡負載2.1 部署架構2.2 架構描述2.2.1 Nginx代理服務器2.2.2 API服務器與API服務器(Backup)2.2.3 nginx.conf配置文件2.2.4 測試方法 3. 高速會話緩存技術3.1 問題背景3.2 使用 R…

Ubuntu22.04怎么退出Emergency Mode(緊急模式)

1.使用nano /etc/fstab命令進入fstab文件下; 2.將掛載項首行加#注釋掉,修改完之后使用ctrlX退出; 3.重啟即可退出緊急模式!

Unity 紅點系統

首先明確一個,即紅點系統的數據結構是一顆樹,并且紅點的數據結構的初始化需要放在游戲的初始化中,之后再是對應的紅點UI側的注冊,對應的紅點UI在銷毀時需要注銷對紅點UI的顯示回調注冊,但是不銷毀數據側的紅點注冊 - …

極新攜手火山引擎,共探AI時代生態共建的破局點與增長引擎

在生成式AI與行業大模型的雙重驅動下,人工智能正以前所未有的速度重構互聯網產業生態。從內容創作、用戶交互到商業決策,AI技術滲透至產品研發、運營的全鏈條,推動效率躍升與創新模式變革。然而,面對AI技術迭代的爆發期&#xff0…

【Redis】SDS結構

目錄 1、背景2、SDS底層實現 1、背景 redis作為高性能的內存數據庫,對字符串操作(如鍵、值的存儲)有極高的要求。c語言原生字符串(以\0結尾的字符串數據)有一些缺點:長度計算需要遍歷(O(n)時間…