TypeScript簡介

🌟 TypeScript入門

TypeScript 是 JavaScript 的超集,由微軟開發并維護,通過靜態類型檢查現代語言特性,讓大型應用開發變得更加可靠和高效。

// 一個簡單的 TypeScript 示例
interface User {name: string;age: number;greet(): string;
}class Developer implements User {constructor(public name: string, public age: number) {}greet() {return `Hello, I'm ${this.name} and I code! 👨?💻`;}
}const dev = new Developer("Alice", 28);
console.log(dev.greet());

🧩 為什么選擇 TypeScript?

特性JavaScriptTypeScript
類型系統動態類型靜態類型
編譯時錯誤檢查??
IDE 智能提示有限強大
面向對象特性基本完整
適用項目規模中小型中大型

🎯 TypeScript 核心特性

1. 🔍 類型系統(靜態類型檢查)

let isDone: boolean = false;  // 布爾值
let decimal: number = 6;      // 數字
let color: string = "blue";   // 字符串
let list: number[] = [1, 2, 3]; // 數組// 元組
let tuple: [string, number] = ["hello", 10];// 枚舉
enum Color { Red = 1, Green, Blue }
let c: Color = Color.Green;

2. 🏗? 接口與類型別名

// 接口
interface Point {x: number;y: number;z?: number; // 可選屬性readonly id: string; // 只讀屬性
}// 類型別名
type UserID = string | number;// 實現接口
class MyPoint implements Point {constructor(public x: number, public y: number, readonly id: string) {}
}

3. 🧬 泛型編程

function identity<T>(arg: T): T {return arg;
}// 使用
let output = identity<string>("myString");
let output2 = identity(42); // 類型推斷

4. 🎭 高級類型

// 聯合類型
type ID = string | number;// 交叉類型
type Named = { name: string };
type Aged = { age: number };
type Person = Named & Aged;// 類型守衛
function isString(test: any): test is string {return typeof test === "string";
}

🛠? TypeScript 開發工具鏈

1. 開發環境配置

# 初始化項目
npm init -y# 安裝 TypeScript
npm install typescript --save-dev# 初始化 tsconfig.json
npx tsc --init

2. 推薦 VSCode 插件

  • TypeScript Vue Plugin (Vue 支持)
  • ESLint (代碼檢查)
  • Prettier (代碼格式化)
  • Jest Runner (測試運行)

3. 編譯與運行

// tsconfig.json 示例
{"compilerOptions": {"target": "ES2020","module": "commonjs","strict": true,"esModuleInterop": true,"outDir": "./dist"},"include": ["src/**/*"]
}

🌈 TypeScript 5.0+ 新特性

1. 🔥 裝飾器(標準)

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

2. 🚀 滿足 ES 模塊規范

// 支持頂級 await
const data = await fetchData();
console.log(data);

3. 🧠 更智能的類型推斷

// 自動推斷數組類型
const mixed = ["text", 42, true]; // (string | number | boolean)[]

📊 TypeScript 生態系統

框架/庫TS 支持度特點
React? 優秀完整類型定義
Vue 3? 原生組合式 API 完美支持
Angular? 內置完全基于 TypeScript
Node.js? 良好@types/node 提供類型定義
Express? 良好需要安裝 @types/express

🚧 常見問題與解決方案

1. 類型斷言

// 方式一:尖括號語法
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;// 方式二:as 語法
let strLength2: number = (someValue as string).length;

2. 處理第三方庫

// 沒有類型定義的庫
declare module "some-untyped-library";// 使用 @types
npm install --save-dev @types/lodash

3. 類型擴展

// 擴展全局類型
declare global {interface Window {myCustomProp: string;}
}

🎓 學習資源推薦

  1. 官方文檔 - 最權威的參考資料
  2. TypeScript Deep Dive - 深入理解 TS
  3. TypeScript 入門教程 - 中文優質教程
  4. TypeScript 4.0 新特性 - 官方博客

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

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

相關文章

[ctfshow web入門] web57

信息收集 這下把.也過濾了&#xff0c;臨時文件上傳無法使用了 //flag in 36.php if(isset($_GET[c])){$c$_GET[c];if(!preg_match("/\;|[a-z]|[0-9]|\|\|\#|\|\"|\|\%|\x09|\x26|\x0a|\>|\<|\.|\,|\?|\*|\-|\|\[/i", $c)){system("cat ".$c…

Android 移動應用開發:頁面跳轉與數據傳遞功能

目錄 ? 運行效果說明 &#x1f4c1; 文件一&#xff1a;MainActivity.java&#xff08;語言&#xff1a;Java&#xff09; &#x1f4c1; 文件二&#xff1a;Edit_MainActivity.java&#xff08;語言&#xff1a;Java&#xff09; &#x1f4c1; 文件三&#xff1a;activi…

MySQL如何優雅的執行DDL

一、概述 在MySQL中&#xff0c;DDL&#xff08;數據定義語言&#xff09;語句用于定義和管理數據庫結構&#xff0c;包括創建、修改和刪除數據庫對象&#xff08;如表、索引等&#xff09;。執行DDL操作時&#xff0c;需要謹慎處理&#xff0c;以避免對生產環境的穩定性和性能…

onenet連接微信小程序(mqtt協議)

一、關于mqtt協議 mqtt協議常用于物聯網&#xff0c;是一種輕量級的消息推送協議。 其中有三個角色&#xff0c;Publisher設備&#xff08;客戶端&#xff09;發布主題到服務器&#xff0c;其他的設備通過訂閱主題&#xff0c;獲取該主題下的消息&#xff0c;Publisher可以發…

【Unity筆記】實現支持不同渲染管線的天空盒曝光度控制組件(SkyboxExposureController)——參數化控制

寫在前面 在Unity中&#xff0c;天空盒&#xff08;Skybox&#xff09;不僅承擔視覺上的背景作用&#xff0c;更是場景環境光照與氛圍塑造的重要組成部分。不同時間、天氣、場景轉換等&#xff0c;都需要靈活調整天空的亮度。而**曝光度&#xff08;Exposure&#xff09;**就是…

blender云渲染指南2025版

一、云渲染核心概念 Blender云渲染是將本地渲染任務遷移到云端服務器集群的技術&#xff0c;通過分布式計算實現效率提升100倍以上的解決方案&#xff0c;其核心邏輯是&#xff1a;用戶上傳Blender項目文件至【渲染101】等云平臺&#xff0c;云端調用高性能服務器&#xff08;…

火語言RPA--七牛云存儲

【組件功能】&#xff1a;存儲本地文件至七牛云 選擇本地文件&#xff0c;通過七牛云存儲配置上傳至七牛云對象存儲的指定地域指定存儲桶指定路徑。 配置預覽 配置說明 AccessKey 支持T或# 前往官網獲取或創建。參考鏈接&#xff1a;https://portal.qiniu.com/user/key Se…

小剛說C語言刷題—1004階乘問題

1.題目描述 編程求 123?n 。 輸入 輸入一行&#xff0c;只有一個整數 n(1≤n≤10)&#xff1b; 輸出 輸出只有一行&#xff08;這意味著末尾有一個回車符號&#xff09;&#xff0c;包括 1 個整數。 樣例 輸入 5 輸出 120 2.參考代碼(C語言版) #include <stdio…

C語言| sizeof(array)占多少字節

C語言| 數組名作為函數參數 sizeof(數組名); 可以求出整個數組在內存中所占的字節數。 被調函數Array_Sum()中&#xff0c;數組array使用sizeof會得到多少&#xff1f; 實參數組a占32字節&#xff0c;實參a傳給形參array&#xff0c;只占4字節。 原因如下&#xff1a; 數組名做…

Xcavate 上線 Polkadot |開啟 Web3 房地產投資新時代

在傳統資產 Tokenization 浪潮中&#xff0c;Xcavate 以房地產為切口迅速崛起。作為 2023 年 OneBlock 冬季波卡黑客松冠軍&#xff0c;Xcavate 憑借創新的資產管理與分發機制&#xff0c;在波卡生態中嶄露頭角。此次主網上線&#xff0c;標志著 Xcavate 正式邁入全球化應用階段…

學習心得《How Global AI Policy and Regulations Will Impact Your Enterprise》Gartner

AI時代來臨,然而與之對應的是海量的數據的安全性和合規性如何保障,如何平衡個人與智能體的利益,恰巧,最近Gartner發布了《How Global AI Policy and Regulations Will Impact Your Enterprise》,我們就其中的觀點一起進行探討。 戰略規劃假設 我們首先關注的是關鍵的戰略…

Inno Setup專業打包指南:從基礎到高級應用

Inno Setup專業打包指南&#xff1a;從基礎到高級應用 Inno Setup是一款免費開源的Windows安裝程序制作工具&#xff0c;以其輕量、易用、功能強大而備受開發者青睞。它通過腳本語言定義安裝行為&#xff0c;能夠創建標準的Windows安裝向導&#xff0c;支持文件安裝、注冊表操…

VScode中關于Copilot的騷操作

目錄 1. Ctrl I 直接在工作區對話 2.Tab 黨福音&#xff1a;寫注釋生成代碼 3. 連續寫幾行函數頭&#xff0c;Copilot 會自動“補全全函數” 4. 自動寫單元測試 5. 在注釋中要求它寫某種風格 6. 代碼重寫器 7. 多語言切換無痛自動翻譯 8. 在空文件中寫注釋&#xff0c…

虛擬專用服務器(VPS)完全指南:從入門到選型

開篇導讀 VPS&#xff08;虛擬專用服務器&#xff09;作為介于共享主機與獨立服務器之間的托管方案&#xff0c;通過獨享資源保障性能本文將系統解析VPS的核心優勢、適用場景及選型策略&#xff0c;助您實現從共享主機到VPS的平滑過渡 什么是虛擬專用服務器&#xff1f; 服務…

前端取經路——性能優化:唐僧的九道心經

大家好&#xff0c;我是老十三&#xff0c;一名前端開發工程師。性能優化如同唐僧的九道心經&#xff0c;是前端修行的精髓所在。在本文中&#xff0c;我將為你揭示從網絡傳輸到渲染優化的九大關鍵技術&#xff0c;涵蓋HTTP協議、資源加載策略、緩存控制等核心難題。通過這些實…

[論文閱讀]Deeply-Supervised Nets

摘要 我們提出的深度監督網絡&#xff08;DSN&#xff09;方法在最小化分類誤差的同時&#xff0c;使隱藏層的學習過程更加直接和透明。我們嘗試通過研究深度網絡中的新公式來提升分類性能。我們關注卷積神經網絡&#xff08;CNN&#xff09;架構中的三個方面&#xff1a;&…

1k實現全磁盤掃描搜索——仙盟創夢IDE-智能編程 編程工具設計

牛馬的痛苦——身兼數職 在多項目開發場景下&#xff0c;項目數量眾多、文件繁雜&#xff0c;導致文件查找困難重重。不同項目架構各異&#xff0c;文件命名缺乏統一規范&#xff0c;相似功能文件分散在不同項目目錄&#xff0c;開發人員往往花費大量時間在文件夾層級間反復切…

Mamba 狀態空間模型 筆記 llm框架 一維卷積

動畫講解 Mamba 狀態空間模型_嗶哩嗶哩_bilibili 舊文本向量乘權重加殘差 感覺好像transformer 過個llm head輸出y 卷積真的很快 參考一文通透想顛覆Transformer的Mamba&#xff1a;從SSM、HiPPO、S4到Mamba(被譽為Mamba最佳解讀)_mamba模型-CSDN博客 偷了 Transformer的二次復…

Python函數:從基礎到進階的完整指南

在Python編程中&#xff0c;函數是構建高效、可維護代碼的核心工具。無論是開發Web應用、數據分析還是人工智能模型&#xff0c;函數都能將復雜邏輯模塊化&#xff0c;提升代碼復用率與團隊協作效率。本文將從函數基礎語法出發&#xff0c;深入探討參數傳遞機制、高階特性及最佳…

Alpha3DCS公差分析系統_國產替代的3D精度管控方案-SNK施努卡

隨著智能制造發展規劃的深入推進&#xff0c;工業軟件國產化替代已上升為國家戰略。在公差分析這一細分領域&#xff0c;長期被國外軟件壟斷的局面正被打破。 蘇州施努卡自主研發的Alpha3DCS&#xff0c;憑借完全自主知識產權和軍工級安全標準&#xff0c;成為國內實現三維公差…