最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

TypeScript基礎(chǔ)類型完全指南(附示例代碼)

 更新時(shí)間:2025年11月24日 09:11:58   作者:我叫張小白。  
TypeScript是JavaScript的一個(gè)超集,支持ES6的標(biāo)準(zhǔn),它擴(kuò)展了JavaScript的語法,這篇文章主要介紹了TypeScript基礎(chǔ)類型完全指南的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

類型總覽

類型描述示例
boolean真/假值truefalse
number數(shù)值類型423.140xFF
string字符串類型"hello"'world'
array數(shù)組類型number[]Array<string>
tuple固定長度數(shù)組[string, number]
enum枚舉類型enum Color { Red, Green }
any任意類型繞過類型檢查
unknown未知類型類型安全的any
void無返回值函數(shù)沒有返回值
null空值表示空值
undefined未定義變量未賦值
never永不存在的值拋出異?;驘o限循環(huán)
object非原始類型{ key: value }

一、boolean類型

boolean類型表示邏輯值,只有兩個(gè)可能的值:true 和 false。這是最基本的數(shù)據(jù)類型之一,常用于條件判斷和邏輯運(yùn)算。

let isDone: boolean = false;
let isActive: boolean = true;

// 類型推斷
let hasPermission = true;  // 推斷為boolean類型

// 布爾運(yùn)算
let result: boolean = isDone && isActive;

擴(kuò)展:TypeScript支持所有JavaScript的布爾運(yùn)算符,如 &&、||、!,并且會(huì)進(jìn)行嚴(yán)格的類型檢查,確保操作數(shù)是布爾值。

二、number類型

number類型表示數(shù)值,包括整數(shù)和浮點(diǎn)數(shù)。TypeScript支持十進(jìn)制、十六進(jìn)制、二進(jìn)制和八進(jìn)制字面量。

let decimal: number = 42;
let hex: number = 0xFF;        // 十六進(jìn)制
let binary: number = 0b1010;   // 二進(jìn)制
let octal: number = 0o744;     // 八進(jìn)制
let float: number = 3.14;

擴(kuò)展:TypeScript遵循JavaScript的IEEE 754浮點(diǎn)數(shù)標(biāo)準(zhǔn),所有數(shù)字都是浮點(diǎn)數(shù)。與JavaScript一樣,TypeScript還支持 Number 對(duì)象和相關(guān)的數(shù)值方法,如 toFixed()、toExponential() 等。

三、string類型

string類型表示文本數(shù)據(jù),可以使用單引號(hào)、雙引號(hào)或反引號(hào)定義。字符串是JavaScript和TypeScript中表示文本的主要方式。

let name: string = "Alice";
let greeting: string = 'Hello';
let message: string = `Welcome, ${name}!`;

擴(kuò)展 - 模板字符串:TypeScript支持ES6的模板字符串,可以嵌入表達(dá)式和多行文本。模板字符串使用反引號(hào)定義,通過 ${expression} 語法嵌入表達(dá)式。

let user = "Bob";
let score = 95;
let summary = `User: ${user}
Score: ${score}
Grade: ${score >= 90 ? 'A' : 'B'}`;

四、array類型

array類型表示相同類型元素的集合。TypeScript提供了兩種定義數(shù)組類型的語法:元素類型后接 [] 或使用泛型數(shù)組類型。

let list1: number[] = [1, 2, 3];
let list2: Array<string> = ["a", "b", "c"];
let mixed: (string | number)[] = [1, "hello", 2];

擴(kuò)展:數(shù)組在TypeScript中具有完整的類型支持,包括數(shù)組方法的類型檢查。當(dāng)嘗試向數(shù)組中添加錯(cuò)誤類型的元素時(shí),TypeScript會(huì)在編譯時(shí)報(bào)錯(cuò)。

五、tuple類型

tuple類型表示一個(gè)已知元素?cái)?shù)量和類型的數(shù)組,各元素的類型不必相同。元組在表示固定結(jié)構(gòu)的數(shù)據(jù)時(shí)非常有用。

let person: [string, number] = ["Alice", 25];
let point: [number, number, number] = [10, 20, 30];

擴(kuò)展:元組在訪問超出定義長度的元素時(shí)會(huì)使用聯(lián)合類型。元組還支持可選元素和剩余元素,提供了更靈活的數(shù)據(jù)結(jié)構(gòu)定義方式。

六、enum類型

enum類型是對(duì)JavaScript標(biāo)準(zhǔn)數(shù)據(jù)類型的一個(gè)補(bǔ)充,用于定義一組命名常量。枚舉類型提供了一種給數(shù)值集合賦予友好名稱的方式。

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

enum Direction { 
  Up = "UP", 
  Down = "DOWN" 
}

 擴(kuò)展:枚舉支持?jǐn)?shù)字枚舉和字符串枚舉。數(shù)字枚舉的值會(huì)自動(dòng)遞增,而字符串枚舉需要為每個(gè)成員初始化。枚舉在編譯后會(huì)生成對(duì)應(yīng)的JavaScript對(duì)象。

七、any類型

any類型是TypeScript的類型系統(tǒng)的逃生艙。使用any類型可以繞過類型檢查,允許變量持有任意類型的值。

let uncertain: any = "hello";
uncertain = 42;
uncertain = true;
uncertain.nonExistentMethod(); // 編譯時(shí)不會(huì)報(bào)錯(cuò)

注意事項(xiàng):any類型會(huì)完全繞過TypeScript的類型檢查,應(yīng)該謹(jǐn)慎使用。過度使用any會(huì)失去TypeScript的類型安全優(yōu)勢。

any vs unknown區(qū)別

  • any:完全繞過類型檢查,可以任意操作

  • unknown:類型安全,需要類型檢查后才能操作

let anyValue: any = "hello";
anyValue.toFixed(); // 編譯通過,運(yùn)行時(shí)可能出錯(cuò)

let unknownValue: unknown = "hello";
// unknownValue.toFixed(); // 編譯錯(cuò)誤:需要類型檢查

八、unknown類型

unknown類型是TypeScript 3.0引入的類型安全的any替代品。它表示未知類型的值,在進(jìn)行類型檢查之前不能對(duì)其進(jìn)行任何操作。

let value: unknown = "hello";

// 需要類型檢查后才能使用
if (typeof value === "string") {
  console.log(value.toUpperCase());
}

擴(kuò)展:unknown類型強(qiáng)制開發(fā)者進(jìn)行顯式的類型檢查,這比any更安全。在處理來自外部源(如API響應(yīng))的數(shù)據(jù)時(shí),unknown是更好的選擇。

九、void類型

void類型表示沒有任何類型,通常用于函數(shù)沒有返回值的情況。聲明為void類型的變量只能賦值為undefined或null。

function logMessage(message: string): void {
  console.log(message);
}

let unusable: void = undefined;

void vs undefined:void表示沒有類型,主要用于函數(shù)返回值;undefined是一個(gè)具體的類型,表示未定義的值。void類型的變量可以賦值為undefined,但undefined類型的變量不能賦值為void。

let u: undefined = undefined;
let v: void = undefined;
// v = u; // 錯(cuò)誤:不能將undefined分配給void

擴(kuò)展:默認(rèn)情況下,null和undefined是所有其他類型的子類型,可以賦值給其他類型。但在開啟 --strictNullChecks 標(biāo)志后,null和undefined只能賦值給any和它們各自的類型。

十一、never類型

never類型表示那些永不存在的值的類型。例如,never類型是那些總是會(huì)拋出異常或根本就不會(huì)有返回值的函數(shù)表達(dá)式的返回值類型。

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

function infiniteLoop(): never {
  while (true) {}
}

擴(kuò)展:never類型是任何類型的子類型,也可以賦值給任何類型;然而,沒有類型是never的子類型或可以賦值給never類型(除了never本身)。在聯(lián)合類型中,never類型會(huì)被自動(dòng)移除。

十二、object類型

object類型表示非原始類型,即不是number、string、boolean、symbol、null或undefined的類型。它用于表示對(duì)象、數(shù)組、函數(shù)等。

let obj: object = { name: "Alice" };
let arr: object = [1, 2, 3];
let func: object = function() {};

擴(kuò)展:使用object類型通常過于寬泛,更好的做法是使用接口或類型別名來定義具體的對(duì)象形狀。object類型主要用于表示"非原始值"的通用概念。

十三、類型斷言

類型斷言類似于其他語言中的類型轉(zhuǎn)換,但不進(jìn)行特殊的數(shù)據(jù)檢查或解構(gòu)。它告訴TypeScript你比它更了解某個(gè)值的類型。

let someValue: any = "hello world";
let strLength1: number = (someValue as string).length;
let strLength2: number = (<string>someValue).length;

擴(kuò)展:TypeScript支持兩種形式的類型斷言:尖括號(hào)語法和as語法。在JSX中只能使用as語法。類型斷言不會(huì)影響運(yùn)行時(shí)行為,只在編譯階段起作用。

類型系統(tǒng)特性總結(jié)

1. 類型推斷

TypeScript能夠根據(jù)上下文自動(dòng)推斷變量的類型:

let x = 3;                    // 推斷為number
let y = "hello";              // 推斷為string
let z = [1, 2, 3];            // 推斷為number[]

2. 類型兼容性

TypeScript使用結(jié)構(gòu)化類型系統(tǒng),基于類型的形狀進(jìn)行檢查:

interface Named {
  name: string;
}

let x: Named;
let y = { name: "Alice", age: 25 };
x = y; // 兼容,因?yàn)閥具有name屬性

3. 類型操作

TypeScript提供了豐富的類型操作符:

// 聯(lián)合類型
let id: string | number;

// 交叉類型
type Named = { name: string };
type Aged = { age: number };
type Person = Named & Aged;

// 類型查詢
let s = "hello";
let n: typeof s; // string類型

實(shí)踐建議

  1. 避免過度使用any:優(yōu)先使用unknown或具體的類型

  2. 利用類型推斷:在明顯的情況下讓TypeScript推斷類型

  3. 使用嚴(yán)格的null檢查:開啟 --strictNullChecks 避免意外的null/undefined錯(cuò)誤

  4. 優(yōu)先使用接口:對(duì)于對(duì)象形狀,接口比類型別名更易擴(kuò)展

  5. 合理使用類型斷言:只在確信類型正確時(shí)使用類型斷言

掌握這些基礎(chǔ)類型是使用TypeScript的關(guān)鍵第一步,它們構(gòu)成了TypeScript強(qiáng)大類型系統(tǒng)的基礎(chǔ)。

到此這篇關(guān)于TypeScript基礎(chǔ)類型完全指南的文章就介紹到這了,更多相關(guān)TS基礎(chǔ)類型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

佛山市| 浙江省| 麻栗坡县| 舒兰市| 长海县| 武乡县| 通海县| 庆阳市| 绥宁县| 武夷山市| 青神县| SHOW| 交城县| 河津市| 石泉县| 赤水市| 罗江县| 靖边县| 汉沽区| 景德镇市| 柘荣县| 沁水县| 德阳市| 永修县| 精河县| 平乡县| 四子王旗| 濮阳县| 安仁县| 额尔古纳市| 陈巴尔虎旗| 陕西省| 九龙坡区| 云和县| 共和县| 云梦县| 历史| 新泰市| 徐水县| 共和县| 平山县|