「TypeScript系列」TypeScript 基礎類型

文章目錄

  • 一、TypeScript 基礎類型
    • 1. **Number**: 用于表示數字。可以是整數或浮點數。
    • 2. **String**: 用于表示文本類型的數據。
    • 3. **Boolean**: 表示邏輯值:`true` 或 `false`。
    • 4. **Array**: 表示一組值。TypeScript 使用泛型(generics)來定義數組的類型。
    • 5. **Tuple**: 類似于數組,但每個元素的類型都是固定的。
    • 6. **Enum**: 枚舉類型,允許我們為一組數值賦予友好的名字。
    • 7. **Any**: 當你不確定一個變量是什么類型時,可以使用 `any` 類型。這相當于告訴 TypeScript 不要進行任何類型檢查。
    • 8. **Void**: 表示沒有任何類型或值的類型。通常用于表示不返回任何值的函數。
    • 9. **Null 和 Undefined**: 這兩個類型在 TypeScript 中有它們自己的類型,但與 `void` 不同,它們是所有類型的子類型。
    • 10. **Never**: 表示的是那些永不存在的值的類型。例如,函數總是拋出異常或根本不會有返回值。
    • 11. **Object**: 用于非原始值(即“對象”或“類”實例)。
    • 12. **Symbol**: 表示唯一的值。
  • 二、TypeScript 支持那些ES6內置對象
    • 1. **Array**
    • 2. **String**
    • 3. **Set 和 Map**
    • 4. **Promise**
    • 5. **RegExp**
  • 三、相關鏈接

一、TypeScript 基礎類型

TypeScript 是 JavaScript 的一個超集,它添加了靜態類型系統和一些其他功能,使得代碼更加健壯和可維護。在 TypeScript 中,有一些基礎類型,這些類型與 JavaScript 中的基本數據類型相對應,但提供了更多的靜態類型檢查。以下是 TypeScript 的基礎類型:

1. Number: 用于表示數字。可以是整數或浮點數。

let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;
let big: bigint = 12345678901234567890n; // TypeScript 3.2+ 支持 bigint

2. String: 用于表示文本類型的數據。

let color: string = "blue";
color = 'red';

3. Boolean: 表示邏輯值:truefalse

let isDone: boolean = false;

4. Array: 表示一組值。TypeScript 使用泛型(generics)來定義數組的類型。

let list: number[] = [1, 2, 3];
let list2: Array<number> = [1, 2, 3];

5. Tuple: 類似于數組,但每個元素的類型都是固定的。

let x: [string, number] = ['hello', 10]; // 正確
// x = [10, 'hello']; // 錯誤

6. Enum: 枚舉類型,允許我們為一組數值賦予友好的名字。

enum Color {Red, Green, Blue}
let c: Color = Color.Green;

7. Any: 當你不確定一個變量是什么類型時,可以使用 any 類型。這相當于告訴 TypeScript 不要進行任何類型檢查。

let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean

8. Void: 表示沒有任何類型或值的類型。通常用于表示不返回任何值的函數。

function warnUser(): void {console.log("This is my warning message");
}

9. Null 和 Undefined: 這兩個類型在 TypeScript 中有它們自己的類型,但與 void 不同,它們是所有類型的子類型。

let u: undefined = undefined;
let n: null = null;

10. Never: 表示的是那些永不存在的值的類型。例如,函數總是拋出異常或根本不會有返回值。

function error(message: string): never {throw new Error(message);
}

11. Object: 用于非原始值(即“對象”或“類”實例)。

let obj: object = {};

12. Symbol: 表示唯一的值。

let sym: symbol = Symbol();

二、TypeScript 支持那些ES6內置對象

TypeScript 支持 ES6(ECMAScript 2015)引入的所有內置對象,并且允許你使用這些對象以及它們的屬性和方法。以下是一些 ES6 內置對象及其在 TypeScript 中的使用案例代碼:

1. Array

ES6 為數組引入了一些新的方法,如 Array.from(), Array.of(), find(), findIndex(), includes(), 等等。

// 使用 Array.from() 將類數組對象轉換為數組
const arrayLike = { 0: 'a', 1: 'b', 2: 'c', length: 3 };
const array: string[] = Array.from(arrayLike);// 使用 Array.of() 創建一個新數組
const numbers = Array.of(1, 2, 3);// 使用 find() 方法查找數組中的元素
const found = numbers.find(num => num === 2);// 使用 includes() 方法檢查數組是否包含某個元素
const hasOne = numbers.includes(1);

2. String

ES6 增強了字符串的功能,如模板字符串、startsWith(), endsWith(), repeat(), 等等。

// 使用模板字符串
const name = 'Alice';
const greeting = `Hello, ${name}!`;// 使用 startsWith() 方法
const startsWithHello = greeting.startsWith('Hello');// 使用 repeat() 方法
const repeated = 'x'.repeat(3); // 'xxx'

3. Set 和 Map

Set 和 Map 是 ES6 引入的兩種新的數據結構。

// 使用 Set
const set = new Set<number>([1, 2, 2, 3, 4, 4, 5]);
// Set 會自動去重
const unique = [...set]; // [1, 2, 3, 4, 5]// 使用 Map
const map = new Map<string, number>();
map.set('one', 1);
map.set('two', 2);
const value = map.get('one'); // 1

4. Promise

Promise 用于處理異步操作。

function fetchData(): Promise<string> {// 模擬異步數據獲取return new Promise<string>((resolve, reject) => {setTimeout(() => {resolve('Data fetched!');}, 1000);});
}fetchData().then(data => {console.log(data); // 輸出 "Data fetched!"
}).catch(error => {console.error('Error fetching data:', error);
});

5. RegExp

正則表達式在 ES6 中沒有大的改動,但你可以在 TypeScript 中使用它們。

const regex = /hello/;
const match = 'hello world'.match(regex); // ['hello', index: 0, input: 'hello world', groups: undefined]
  1. Proxy 和 Reflect

這兩個是 ES6 引入的元編程工具。

const target = {};
const handler = {get(target, propKey, receiver) {return `Getting ${propKey}!`;}
};const proxy = new Proxy(target, handler);
console.log(proxy.example); // 輸出 "Getting example!"

在上面的代碼中,Proxy 用于創建一個對象的代理,攔截對目標對象的某些操作,而 Reflect 提供了一種方法來在運行時獲取默認行為。雖然 Reflect 在此例中沒有被直接使用,但它是 Proxy 的一個重要伴侶,因為許多 Proxy 處理器默認都會使用 Reflect 上的方法。

三、相關鏈接

  1. TypeScript中文網
  2. TypeScript下載
  3. TypeScript文檔
  4. TypeScript系列」TypeScript簡介及基礎語法

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

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

相關文章

Mysql存儲引擎對比

存儲引擎InnoDBMyISAM文件存儲結構.frm文件&#xff1a;存放表結構的定義信息 .ibd文件或.ibdata文件&#xff1a;存放InnoDB數據&#xff08;數據和索引&#xff09;【獨享表空間】每個表一個.ibd文件【共享表空間】所有表使用一個.ibdata文件- .frm文件&#xff1a;存放表結構…

Nginx靜態壓縮和代碼壓縮,提高訪問速度!

一、概述 基于目前大部分的應用&#xff0c;都使用了前后端分離的框架&#xff0c;vue的前端應用&#xff0c;也是十分的流行。不知道大家有沒有遇到這樣的問題&#xff1a; 隨著前端框架的頁面&#xff0c;功能開發不斷的迭代&#xff1b;安裝的依賴&#xff0c;不斷的增多&a…

機器學習【簡述】

什么是機器學習 機器學習研究的是計算機怎么模擬人類的學習行為&#xff0c;以獲取的知識或技能&#xff0c;并重新組織已有的知識結構使之不斷改善自身。簡單一點說&#xff0c;就是計算機從數據中學習初規律和模式&#xff0c;以應用在新數據上做預測的任務。近年來互聯網數…

無人機的用途

無人機&#xff0c;即無人駕駛飛機&#xff0c;其用途廣泛且多樣&#xff0c;涉及到多個領域。 在農業領域&#xff0c;無人機通過搭載各種傳感器和相機&#xff0c;可以對農田進行空中巡視&#xff0c;收集農田數據&#xff0c;如土壤含水量、氣溫、濕度等&#xff0c;以及植…

詳細的性能分析和調優的示例過程:

當面臨數據庫查詢性能下降的問題時&#xff0c;以下是一個詳細的性能分析和調優的示例過程&#xff1a; ### 1. 監控和識別問題 假設你負責維護一個電子商務網站數據庫&#xff0c;最近用戶反映搜索功能響應慢。你立即使用數據庫監控工具&#xff08;如Prometheus、Grafana&am…

Ardupilot開源飛控工程項目編譯回顧

Ardupilot開源飛控工程項目編譯回顧 1. 源由2. 工程編譯3. 命令列表3.1 工作環境設置3.2 獲取工程代碼3.3 建立編譯環境3.4 編譯工程代碼3.5 保存編譯結果3.6 清理編譯結果3.7 編譯設備目標 4. 補充 1. 源由 最近&#xff0c;有點莫名的連續遇到了2次Ardupilot編譯報錯。百思不…

Quartz.Net(2)——NetCore3.1整合Quartz.Net

在上篇文章中Quartz.Net(1) 已經介紹了Quartz.Net的基本運用&#xff0c;該篇文章中將主要介紹NetCore3.1如何整合Quartz.Net&#xff0c;在后臺運行定時job&#xff0c;并運用到上篇文章講到的介紹點。 1 導入Nuget包 <PackageReference Include"Quartz" Versio…

PyTorch中的torch.cuda.amp.autocast

torch.cuda.amp.autocast的使用 torch.cuda.amp.autocast是PyTorch中一種自動混合精度計算的方法&#xff0c;它允許在深度學習模型的訓練過程中自動執行混合精度計算&#xff0c;從而加快訓練速度并減少顯存占用。 在使用torch.cuda.amp.autocast時&#xff0c;一般會將模型…

Ubuntu系統如何使用寶塔面板搭建HYBBS論壇并發布公網遠程訪問

文章目錄 前言1. HYBBS網站搭建1.1 HYBBS網站安裝1.2 HYBBS網站測試1.3. cpolar的安裝和注冊 2. 本地網頁發布2.1.Cpolar臨時數據隧道2.2.Cpolar穩定隧道&#xff08;云端設置&#xff09;2.3.Cpolar穩定隧道&#xff08;本地設置&#xff09; 3.公網訪問測試總結 前言 在國內…

【智能算法】河馬優化算法(HO)原理及實現

目錄 1.背景2.算法原理2.1算法思想2.2算法過程 3.結果展示4.參考文獻5.代碼獲取 1.背景 2024年&#xff0c;MH Amiri受到自然界河馬社會行為啟發&#xff0c;提出了河馬優化算法&#xff08;Hippopotamus Optimization Algorithm, HO&#xff09;。 2.算法原理 2.1算法思想 …

動態IP的應用場景

動態IP適用于網絡設備規模較小、需要靈活連接網絡、經濟條件有限或者需要臨時建立網絡的場景。

【C++】AVL

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 目錄 前言 一、AVL 樹 1.1、AVL樹的概念 1.2、AVL樹節點的定義 1.3、AVL樹的插入 1.4、AVL樹的旋轉 1.4.1、新節點插入較高左子樹的左側---左左&#xff1a;右單旋 1…

Spring整體流程源碼分析

DisableEncodeUrlFilter 防止sessionId被泄露 包裝器模式 WebAsyncManagerIntegrationFilter WebAsyncManagerIntegrationFilter通常與Spring MVC的異步請求處理機制一起使用&#xff0c;確保在使用Callable或DeferredResult等異步處理方式時&#xff0c;安全上下文能夠正…

CSP備考---位運算

前言 本期我們將學習位運算&#xff0c;與本期類型的考點&#xff08;二進制轉換&#xff09;反碼、補碼、原碼。 1、位運算是什么 首先我們需要先了解位運算是什么。 我們知道&#xff0c;計算機中的數在內存中都是以二進制形式進行存儲的 &#xff0c;而位運算就是直接對整…

332_C++_mmap 映射文件或設備到進程的地址空間,或者創建一個新的映射區域

mmap : 映射文件或設備到進程的地址空間,或者創建一個新的映射區域(通常是匿名的) mmap 是 Linux 和其他類 Unix 系統中的一個系統調用,用于映射文件或設備到進程的地址空間,或者創建一個新的映射區域(通常是匿名的)。mmap 提供了靈活的方式來管理內存,它經常用于實現…

打造本地GPT專業領域知識庫AnythingLLM+Ollama

如果你覺得openai的gpt沒有隱私&#xff0c;或者需要離線使用gpt&#xff0c;還是打造專業領域知識&#xff0c;可以借用AnythingLLMOllama輕松實現本地GPT. AnythingLLMOllama 實現本地GPT步聚&#xff1a; 1 下載 AnythingLLM軟件 AnythingLLM官網地址&#xff1a; Anythi…

功能卓越,未來可期!實在Agent智能體公測圓滿收官

“被需要的智能才是實實在在的智能。”一直以來&#xff0c;實在智能始終堅持從行業本質出發思考如何圍繞客戶需求打造更智能、更普惠的智能體數字員工&#xff0c;切實關注用戶真實的使用體驗與感受。 自2020年7月起&#xff0c;實在智能率先推出第一代實在RPA數字員工&#…

SpringBoot設置默認文件大小

1、問題發現 有個需求&#xff0c;上傳文件的時候&#xff0c;發現提示了這個錯誤&#xff0c;看了一下意思是說&#xff0c;文件超過了1M。 看我們文件的大小&#xff1a; 發現確實是&#xff0c;文件超出了1M&#xff0c;查了一下資料&#xff0c;tomcat默認上傳文件大小為1M…

Python環形數組

在編程中&#xff0c;環形數組&#xff08;Circular Array&#xff09;是一種特殊的數組結構&#xff0c;其中最后一個元素連接到第一個元素&#xff0c;形成一個環形。這種結構在某些算法問題中很有用&#xff0c;例如約瑟夫環問題&#xff08;Josephus Problem&#xff09;。…

簡單粗暴的翻譯英文pdf

背景&#xff1a;看書的時候經常遇到英文pdf&#xff0c;沒有合適的翻譯軟件可以快速翻譯全書。這里提供一個解決方案。 Step 1 打開英文pdfCTRLA全選文字CTRLC復制打開記事本CTRLV復制保存為data.txt Step 2 寫一個C腳本 // ToolPdf2Html.cpp : 此文件包含 "main&quo…