【前端】【Ts】【知識點總結】TypeScript知識總結

  • 一、總體概述

    • TypeScript 是 JavaScript 的超集,主要通過靜態類型檢查和豐富的類型系統來提高代碼的健壯性和可維護性。
    • 它涵蓋了從基礎數據類型到高級類型、從函數與對象的類型定義到類、接口、泛型、模塊化及裝飾器等眾多知識點。
    • 掌握這些內容有助于編寫更清晰、結構更合理、錯誤更少的代碼。
  • 二、詳細知識點總結

    • (一)基礎數據類型

      • (1) 原始類型
        • 包括 number、string、boolean、null、undefined、symbol、bigint。
      • (2) 對象類型
        • 對象、數組、元組、函數等都是引用類型。
    • (二)函數與作用域

      • (1) 函數定義
        • 可使用函數聲明、函數表達式或箭頭函數。
        • 支持可選參數、默認參數以及剩余參數。
      • (2) 返回值類型
        • 可通過 void 標注無返回值函數,使用 never 表示永遠不會返回(如拋異常或無限循環)。
    • (三)接口 (interface)

      • (1) 對象類型定義
        • 用于聲明對象屬性及其類型,提升代碼重用性和可讀性。
      • (2) 函數與數組類型控制
        • 可約束函數的參數和返回值,也可用于定義數組索引類型。
      • (3) 屬性修飾
        • 支持可選屬性(?)和只讀屬性(readonly)。
      • (4) 繼承
        • 通過 extends 實現單繼承或多繼承,擴展已有接口。
    • (四)類 (Class)

      • (1) 基本概念
        • 包括構造函數、實例屬性與方法。
      • (2) 訪問修飾符
        • public(公有)、private(私有)、protected(受保護),控制成員的可見性。
      • (3) 靜態成員與抽象類
        • 靜態屬性與方法屬于類本身,抽象類用于定義抽象方法供子類實現。
    • (五)泛型 (Generics)

      • (1) 泛型函數
        • 使函數參數和返回值具有靈活的類型。
      • (2) 泛型接口與類
        • 用于在接口或類中引入類型參數,增強復用性。
      • (3) 泛型約束
        • 限制泛型類型必須滿足某些條件(如具有某些屬性)。
    • (六)枚舉 (Enums)

      • (1) 數字枚舉
        • 默認從 0 開始,每個枚舉成員自動遞增,可進行反向映射。
      • (2) 字符串枚舉
        • 枚舉成員為字符串常量,具有更好的語義。
    • (七)高級類型

      • (1) 聯合類型與交叉類型
        • 聯合類型使用 “|” 限制變量取值為多個類型中的一種;交叉類型 “&” 則用于組合多個類型的特性。
      • (2) 字面量類型
        • 限制變量只能取具體的字面量值,常與聯合類型一起使用。
      • (3) 類型別名 (type alias)
        • 用于給復雜類型或聯合類型取別名,便于復用和維護。
      • (4) interface 與 type 的區別
        • 接口側重于描述對象結構,支持聲明合并;類型別名適用于任何類型,但不支持合并。
    • (八)類型推斷與類型兼容

      • (1) 類型推斷
        • 編譯器根據變量賦值自動推斷類型,簡化代碼書寫。
      • (2) 類型兼容性
        • 不同類型之間的兼容判斷,決定了賦值、參數傳遞時的類型匹配。
    • (九)類型保護

      • (1) 內置類型保護
        • 使用 typeof、instanceof、in 等操作符判斷類型。
      • (2) 用戶自定義類型保護
        • 利用返回類型為 x is T 的函數,實現自定義的類型保護邏輯。
    • (十)裝飾器 (Decorators)

      • (1) 裝飾器概念
        • 通過 @ 符號為類、方法、屬性、參數添加元數據或行為,常用于框架中。
      • (2) 使用條件
        • 需要開啟 experimentalDecorators 編譯選項。
    • (十一)模塊系統與命名空間

      • (1) 模塊化
        • 支持 ES6 模塊(import/export)和 CommonJS 模塊,實現代碼分離。
      • (2) 命名空間
        • 用于組織代碼內部模塊,避免全局污染。
    • (十二)工具類型

      • (1) 常見工具類型包括:
        • Partial:將所有屬性設為可選。
        • Readonly:將所有屬性設為只讀。
        • Record:構造鍵值對類型。
        • PickOmit:從類型中挑選或剔除某些屬性。
        • 其他如 Exclude、Extract、NonNullable、ReturnType、InstanceType 等。
    • (十三)其他關鍵概念

      • (1) any 與 unknown
        • any 類型允許任意賦值,缺乏類型保護;unknown 類型更安全,需經過類型斷言或檢查后才能使用。
      • (2) 類型斷言
        • 使用 as 或尖括號語法,將一個值指定為某一具體類型,提升類型判斷準確性。
  • 三、總體回顧

    • TypeScript 的核心在于利用靜態類型系統提前捕獲錯誤,通過豐富的類型系統(包括基礎類型、高級類型、接口、類、泛型等)以及工具類型來構造靈活且健壯的代碼結構。
    • 掌握這些知識點不僅可以提高代碼質量,還能在大型項目中更好地管理和維護代碼。
    • 通過不斷實踐和總結,理解每個知識點的用途和最佳實踐,將有助于編寫出既安全又高效的 TypeScript 應用。

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

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

相關文章

基于Springboot+vue的租車網站系統

基于SpringbootVue的租車網站系統是一個現代化的在線租車平臺,它結合了Springboot的后端開發能力和Vue的前端交互優勢,為用戶和汽車租賃公司提供了一個高效、便捷、易用的租車體驗和管理工具。以下是對該系統的詳細介紹: 一、系統架構 ?后…

藍橋杯之c++入門(二)【輸入輸出(上)】

目錄 前言1.getchar和 putchar1.1 getchar()1.2 putchar() 2.scanf和 printf2.1 printf2.1.1基本用法2.1.2占位符2.1.3格式化輸出2.1.3.1 限定寬度2.1.3.2 限定小數位數 2.2 scanf2.2.1基本用法2.2.2 占位符2.2.3 scanf的返回值 2.3練習練習1&#xff1a…

我的鴻蒙學習之旅:探索萬物互聯的新宇宙

在科技飛速發展的今天,操作系統領域的創新層出不窮。華為鴻蒙系統的出現,猶如一顆璀璨的新星,照亮了萬物互聯的未來之路。懷著對新技術的好奇與渴望,我踏上了學習鴻蒙的征程,這段經歷充滿了挑戰與驚喜,也讓…

Docker數據卷管理及優化

一、基礎概念 1.docker數據卷是一個可供容器使用的特殊目錄,它繞過了容器的文件系統,直接將數據存在宿主機上。 2.docker數據卷的作用: 數據持久化:即使容器被刪除或重建數據卷中的數據仍然存在 數據共享:多個容器可以…

java:mysql切換達夢數據庫(五分鐘適配完成)

背景 因為項目需要國產數據庫的支持,選擇了達夢數據庫,由于我們之前使用的是MySQL今天我們就來說一說,如何快速的切換到達夢數據庫,原本這一章我打算寫VIP章節的后續想想,就純分享。畢竟是國產數據庫遷移數據庫 這里…

在游戲本(6G顯存)上本地部署Deepseek,運行一個14B大語言模型,并使用API訪問

在游戲本6G顯存上本地部署Deepseek,運行一個14B大語言模型,并使用API訪問 環境說明環境準備下載lmstudio運行lmstudio 下載模型從huggingface.co下載模型 配置模型加載模型測試模型API啟動API服務代碼測試 deepseek在大語言模型上的進步確實不錯&#xf…

[leetcode]兩數之和等于target

源代碼 #include <iostream> #include <list> #include <iterator> // for std::prev using namespace std; int main() { int target 9; list<int> l{ 2, 3, 4, 6, 8 }; l.sort(); // 確保列表是排序的&#xff0c;因為雙指針法要求輸入是…

C# OpenCV機器視覺:學生注意力監測

小王是一位充滿活力的年輕教師&#xff0c;剛接手了一個新班級。他滿心歡喜地準備在課堂上大顯身手&#xff0c;把自己的知識毫無保留地傳授給學生。可沒上幾節課&#xff0c;他就發現了一個讓人頭疼的問題&#xff1a;課堂上總有那么幾個學生注意力不集中&#xff0c;要么偷偷…

DeepSeek R1技術報告關鍵解析(6/10):DeepSeek-R1 vs. OpenAI-o1-1217:性能對比分析

1. 為什么要對比 DeepSeek-R1 和 OpenAI-o1-1217&#xff1f; 在當前的大模型競爭中&#xff0c;OpenAI 的 o1-1217 被認為是推理能力較強的模型之一。 而 DeepSeek-R1 作為一個采用強化學習優化推理能力的開源模型&#xff0c;其性能是否能夠與 OpenAI-o1-1217 競爭&#xf…

PyQt6/PySide6 的 QTableView 類

QTableView 是 PyQt6 或 PySide6 庫中用于顯示二維表格數據的控件。它是一個非常強大且靈活的控件&#xff0c;適用于展示和編輯表格數據。QTableView 通常與 QAbstractItemModel 的子類&#xff08;如 QStandardItemModel 或自定義模型&#xff09;一起使用&#xff0c;以提供…

【嵌入式】C語言多文件編程與內聯函數

文章目錄 0 前言1 從C語言編譯說起2 重復定義錯誤&#xff08;ODR violation&#xff09;和條件編譯3 內聯函數inline和static inline4 總結 0 前言 最近在研究ARM內核代碼時&#xff0c;看到core_cm3.h中有大量的內聯函數&#xff0c;為此查閱了很多資料&#xff0c;也和朋友討…

10分鐘本地部署Deepseek-R1

10分鐘本地部署DeepSeek-R1 什么是DeepSeek-R1快速本地部署DeepSeek-R1Ollama下載Ollama安裝檢查是否安裝成功 安裝DeepSeek-R1模型模型使用測試 什么是DeepSeek-R1 DeepSeek-R1是中國的深度求索&#xff08;DeepSeek&#xff09;公司開發的智能助手。其具有極佳的語義理解和生…

Office / WPS 公式、Mathtype 公式輸入花體字、空心字

注&#xff1a;引文主要看注意事項。 1、Office / WPS 公式中字體轉換 花體字 字體選擇 “Eulid Math One” 空心字 字體選擇 “Eulid Math Two” 2、Mathtype 公式輸入花體字、空心字 2.1 直接輸入 花體字 在 mathtype 中直接輸入 \mathcal{L} L \Large \mathcal{L} L…

Python小游戲29乒乓球

import pygame import sys # 初始化pygame pygame.init() # 屏幕大小 screen_width 800 screen_height 600 screen pygame.display.set_mode((screen_width, screen_height)) pygame.display.set_caption("打乒乓球") # 顏色定義 WHITE (255, 255, 255) BLACK (…

【C++】STL——vector底層實現

目錄 &#x1f495; 1.vector三個核心 &#x1f495;2.begin函數&#xff0c;end函數的實現&#xff08;簡單略講&#xff09; &#x1f495;3.size函數&#xff0c;capacity函數的實現 &#xff08;簡單略講&#xff09; &#x1f495;4.reserve函數實現 &#xff08;細節…

7、怎么定義一個簡單的自動化測試框架?

定義一個簡單的自動化測試框架可以從需求理解、框架設計、核心模塊實現、測試用例編寫和集成執行等方面入手&#xff0c;以下為你詳細介紹&#xff1a; 1. 明確框架需求和范圍 確定測試類型&#xff1a;明確框架要支持的測試類型&#xff0c;如單元測試、接口測試、UI 測試等…

安卓(android)讀取手機通訊錄【Android移動開發基礎案例教程(第2版)黑馬程序員】

一、實驗目的&#xff08;如果代碼有錯漏&#xff0c;可在代碼地址查看&#xff09; 1.熟悉內容提供者(Content Provider)的概念和作用。 2.掌握內容提供者的創建和使用方法。 4.掌握內容URI的結構和用途。 二、實驗條件 1.熟悉內容提供者的工作原理。 2.掌握內容提供者訪問其…

AI取代人類?

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

C語言-----數據結構從門到精通

1.數據結構基本概念 數據結構是計算機中存儲、組織數據的方式&#xff0c;旨在提高數據的訪問和操作效率。它是實現高效算法和程序設計的基石。 目標:通過思維導圖了解數據結構的知識點,并掌握。 1.1邏輯結構 邏輯結構主要四種類型: 集合&#xff1a;結構中的數據元素之…

華為小米vivo向上,蘋果榮耀OPPO向下

日前&#xff0c;Counterpoint發布的手機銷量月度報告顯示&#xff0c;中國智能手機銷量在2024年第四季度同比下降3.2%&#xff0c;成為2024年唯一出現同比下滑的季度。而對于各大智能手機品牌來說&#xff0c;他們的市場份額和格局也在悄然發生變化。 華為逆勢向上 在2024年第…