隨著互聯網的普及和技術的不斷發展,web前端開發工程師在當今互聯網行業中的重要地位,Web前端開發工程師作為一個專業技術崗位,需要掌握多種技術來構建現代化的網頁和應用程序,今天八維職業學校和大家一起來看看web前端開發工程師常見的TypeScript中使用的基本類型,希望對想要學習和了解web前端開發工程師這個行業的同學有所幫助。

TypeScript有多種基本類型,在構建更復雜的類型時用作構建塊。在以下部分中,我們將檢查這些類型中的大多數。請注意,我們在本節中創建的大多數變量都可以省略它們的類型,因為TypeScript可以推斷它們,但是,我們為了學習目的而明確說明了類型。
String
string字符串用于文本數據類型,如字符串文字或模板字符串。
試試下面的代碼:
constlanguage:string='TypeScript';constmessage:string=`I'mprogrammingin${language}!`;
在這個代碼塊中,語言(language)和消息(message)都被分配了string字符串類型。模板文字仍然是一個字符串,即使它是動態確定的。
由于字符串在JavaScript編程中很常見,因此這可能是您最常使用的類型之一。
Boolean
boolean類型用于表示真或假。
嘗試以下塊中的代碼:
consthasErrors:boolean=true;constisValid:boolean=false;
由于hasErrors和isValid被聲明為布爾值,它們只能被分配值true和false。請注意,truthy和falsy值不會轉換為它們的布爾等效值,如果與這些變量一起使用會引發錯誤。

Number
number用于表示整數和浮點數,如下所示:
constpi:number=3.14159;constyear:number=2021;
這是另一種在JavaScript開發中經常使用的常見類型,因此這種聲明在TypeScript中很常見。
Bigint
bigint類型是針對ES2020時可以使用的類型。它用于表示BigInt,這是一種新的數據類型,用于存儲大于2^53的整數。
試試下面的代碼:
constbigNumber:bigint=9007199254740993n;
注意:如果此代碼拋出錯誤,可能是TypeScript未設置為targetES2020。這可以在我們的tsconfig.json文件中進行更改。
如果我們使用大于2^53的數字或使用某些數學庫,bigint將是一種常見的類型聲明。
symbol
symbol用于表示原始symbol值。這將創建一個唯一的、未命名的值。
使用Symbol()構造函數運行以下代碼:
constmySymbol:symbol=Symbol('unique-symbol-value');
這些值的唯一性可用于避免引用沖突。有關JavaScript中符號的更多信息,請閱讀Mozilla開發人員網絡(MDN)上的符號文章。

Array
在TypeScript中,數組是根據它們預期具有的元素進行類型化的。輸入數組有兩種方法:
將[]附加到數組元素的預期類型。例如,如果我們想輸入一個包含多個數值的數組,我們可以這樣做:
constprimeNumbers:number[]=[2,3,5,7,11];
如果我們給這個數組分配了一個字符串值,TypeScript會給我們一個錯誤。
使用Array
constprimeNumbers:Array
兩種方式是相同的,所以選擇一種并嘗試僅使用該格式來表示數組。這將使代碼庫保持一致,這通常比選擇一種風格更重要。
在TypeScript中使用保存數組的變量的一個重要方面是大多數時候,我們必須鍵入它們。試試下面的代碼:
constmyArray=[];
TypeScript無法推斷此數組預期的正確類型。相反,它使用any[],這意味著任何東西的數組。這不是類型安全的,并且可能會在以后的代碼中引起混淆。
為了使我們的代碼更加健壯,建議明確說明數組的類型。例如,這將確保數組具有數字元素:
constmyArray:number[]=[];
這樣,如果我們嘗試將無效值推送到數組,TypeScript將產生錯誤。試試下面的代碼:
constmyArray:number[]=[];myArray.push('some-text');
TypeScript編譯器將顯示錯誤2345:
Argumentoftype'string'isnotassignabletoparameteroftype'number'.(2345)

Tuples
元組是具有特定數量元素的數組。一個常見的用例是以[x,y]格式存儲2D坐標。如果我們正在使用React并使用Hooks,大多數Hooks的結果也是一個元組,例如const[isValid,setIsValid]=React.useState(false)。
要鍵入元組,而不是鍵入數組時,我們將元素的類型包裝在[]中,并用逗號分隔它們。想象一下,我們正在創建一個包含元素類型的文字數組:
constposition:[number,number]=[1,2];
如果我們嘗試傳遞的元素數量少于或多于元組預期的元素數量,TypeScript編譯器將顯示錯誤2322。
以下面的代碼為例:
constposition:[number,number]=[1,2,3];
這將產生以下結果:
Type'[number,number,number]'isnotassignabletotype'[number,number]'.Sourcehas3element(s)buttargetallowsonly2.(2322)
any
在某些情況下,指定值的類型可能太難了,例如該值來自第三方庫或最初編寫時沒有使用TypeScript的代碼。在以小步驟將JavaScript代碼庫遷移到TypeScript時,這種情況尤其常見。在這些場景中,可以使用一種稱為any的特殊類型,這意味著任何類型。使用任何方式選擇退出類型檢查,這與使TypeScript編譯器忽略該值相同。
采用以下代碼塊:
letthisCanBeAnything:any=12345;thisCanBeAnything="Icanbeanything-Look,I'mastringnow";thisCanBeAnything=["NowI'manarray-ThisisalmostlikepureJavaScript!"];
這些聲明都不會在TypeScript中產生錯誤,因為類型被聲明為any。
注意:大多數時候,如果可以的話,我們應該避免使用any。使用它會失去TypeScript的主要好處之一:擁有靜態類型的代碼。

unknown
unknown類型就像任何類型的類型安全對應物。當我們想鍵入無法確定其值的內容時,可以使用unknown,但仍希望確保使用該值的任何代碼在使用之前正確檢查類型。這對于庫中的函數庫作者很有用,這些函數可以從用戶那里接受廣泛的值并且不想顯式地鍵入值。
例如,如果我們有一個名為code的變量:
letcode:unknown;
然后稍后在程序中,我們可以為該字段分配不同的值,例如35(數字),或完全不相關的值,例如數組甚至對象。
注意:我們使用let是因為我們要為該變量分配一個新值。
稍后在同一代碼中,我們可以將代碼設置為一個數字:
code=35;
但后來我們可以將它分配給一個數組:
code=[12345];
我們甚至可以將它重新分配給一個對象:
code={};
如果稍后在代碼中,我們想將該值與其他數字進行比較,例如:
constisCodeGreaterThan100=code>100;
TypeScript編譯器將顯示錯誤2571:
Objectisoftype'unknown'.(2571)
發生這種情況是因為代碼需要用于此比較的數字類型,而不是未知類型。當使用未知類型的值執行任何操作時,TypeScript需要確保類型是它所期望的類型。這樣做的一個例子是使用JavaScript中已經存在的typeof運算符。檢查以下代碼塊:
if(typeofcode==='number'){constisCodeGreaterThan100=code>60;//...}else{thrownewError('Invalidvaluereceivedascode');}
在此示例中,我們正在使用typeof運算符檢查代碼是否為數字。當我們這樣做時,TypeScript將強制我們的變量類型在if塊內編號,因為在運行時if塊內的代碼只有在代碼當前設置為數字時才會被執行。否則,我們將拋出一個JavaScript錯誤,指出傳遞的值無效。
要了解unknown和any類型之間的區別,我們可以將unknown視為"我不知道該值的類型",將any視為"我不關心該值的類型"。

void
我們可以使用void類型將相關變量定義為根本不包含任何類型。如果將不返回值的函數的結果分配給變量,則該變量將具有void類型。
采取以下代碼:
functiondoSomething(){};constresultOfVoidFunction:void=doSomething();
我們很少需要直接在TypeScript中使用void類型。
nullandundefined
TypeScript中的null和undefined值具有它們自己的唯一類型,它們以相同的名稱調用:
constsomeNullField:null=null;constsomeUndefinedField:undefined=undefined;
這些在創建我們自己的自定義類型時特別有用,這將在本系列的后面部分介紹。
never
never類型是永遠不會存在的值的類型。例如,假設我們創建了一個數值變量:
constyear:number=2021;
如果我們創建一個if塊以在year不是數字的情況下運行某些代碼,則可能如下所示:
if(typeofyear!=="number"){year;}
if塊中的變量year的類型將永遠不會。這是因為,由于year被鍵入為數字,因此,這個if塊的條件永遠不會滿足。我們可以將never類型視為不可能的類型,因為此時該變量不能有值。

Object
對象類型表示任何不是原始類型的類型。這意味著它不是以下類型之一:
number
string
boolean
bigint
symbol
null
undefined
對象類型通常用于描述對象字面量,因為可以將任何對象字面量分配給它:
constprogrammingLanguage:object={name:"TypeScript"};


學制學費
學習時間
近期活動
開班信息
課程內容
就業情況
津公網安備12011302141430
如何成為IT行業中有競爭力的人工智能工程師?
在當今數字化浪潮洶涌澎湃的時代,人工智能作為 IT 行業最具爆發力的領域之一,正重塑著世界的方方面面,從醫療保健到金融服務,從智能交通到娛樂產業,其影響力無處不在。若想成為這一充滿魅力與挑戰領域中的佼佼者 —— 極具競爭力的人工智能工程師,需要在多個維度精心打磨自己。