TypeScript 基礎型別

2021-09-13 23:13:32 字數 2927 閱讀 4699

基礎型別可以依據是否含有型別關鍵字分為兩類:

注意:所有型別關鍵字都是小寫的。

注:這種分類並不嚴謹,分類的目的僅僅用於幫助記憶
型別用來指定變數的型別,相容的型別之間才能進行賦值、傳參等操作。

宣告變數型別使用變數名: 型別格式,如let decimal: number = 10,宣告之後decimal就只能接受number型別的賦值,否則編譯器會報錯。

變數宣告為陣列型別時,還需要指定陣列元素型別,有以下兩種等效方式:

如果陣列元素型別有多種呢?那就需要使用元組(tuple)。

元組可以指定固定索引位置的陣列元素型別。

let x: [string, number]表示第 0 位和第 1 位分別是stringnumber型別,第 2 位及之後可以是stringnumber,即前面所有索引位的型別之一。

列舉型別可以更加友好地定義數值集合

enum color 

let c: color = color.red;

列舉型別預設從 0 開始遞增標記成員,也可以顯式標記部分或者所有成員。部分標記時,未標記成員按前向最近顯式標記值遞增。

enum color 

// 部分標記時,自動遞增,因此 green => 2, blue => 3

enum color

乙個很好用的功能是,列舉可以反向查詢列舉成員名稱,如:

enum color 

console.log(color[2])

// => green

any表示任意型別,宣告為any的變數可以賦予任意型別的值。

那是不是等於沒有型別檢測了?

之所以存在這種型別,原因有兩個:

寫**時開發者也不是很明確要用哪種型別,或者只知道部分型別

相容使用者輸入或者第三方庫

原因 2 中,比如應該把jquery物件宣告為什麼型別呢?

當然,可以像其他語言中一樣宣告為object,如let $: object = jquery,這樣賦值是沒問題的。

在 js 中一切皆為物件,所以給宣告為object的變數賦值任何值。

但是當呼叫函式時,比如$.ajax(),編譯器卻會報錯說找不到ajax()函式,即使jquery上有該方法。

但是宣告為any卻不會,因為編譯器並不會對它進行檢查。

注意:object是 ts 內建的介面型別,object是基礎型別,let a: object;等效於let a: {}

voidany相反,表示不能出現任意型別,多用於定義無返回值的函式。

function warn(): void
如果用於宣告變數,那麼只能接受undefinednull,這樣的宣告其實是沒啥用途的。

let unusable: void = undefined;
nullundefindedvoid一樣,定義型別本身是沒啥用途的,但是需要注意的是,他們是其他任何型別(包括void)的子型別。因此,可以把null賦值給number型別,let decimal: number = null

但是,不建議這種用法,可以使用--strictnullchecks選項來關閉。這樣的話,nullundefined就只能賦值給void和它們本身。

never表示這種型別的值永遠不會出現。聽起來很奇怪,但是它確實有應用場景。

最大的場景就是用在函式返回值中,如:

function error(msg: string): never 

function fail()

function infiniteloop(): never 

}

ts 編譯器會按照宣告規則自動檢查變數型別,免去了開發者自己檢查的煩惱。但是作為規則,它是固定死的,有時也需要靈活「通融」一下。

型別斷言就是一種「通融」方式,實質上是一種型別轉換(type cast),它告訴編譯器「相信我,我知道我在做什麼,我為我的行為負責」,然後編譯器就會把它認為是目標型別。

型別斷言有兩種語法形式,下例中都是將變數anytypevalue轉為string型別:

推薦使用as語法,因為當 ts 與 jsx 一起使用時,只允許as語法。

typescript 索引型別

1.索引型別 let obj function getkey obj any keys string 指定所包含的屬性 console.log getkey obj,a b 放入不包含的屬性,正常情況我們希望這種要報錯 console.log getkey obj,c f 1.2 接下來學習幾種方法...

typescript 內建型別

ts關鍵字 ts 內建型別 partial 將內建屬性邊可選 required 將型別屬性邊必選 pick 從某個型別中挑出一些屬性 record mutable 將型別的屬性邊城可修改 readonly 型別的屬性變唯讀 returntype 用來得到乙個函式的返回值型別 的作用是斷言某個變數不會...

typeScript基礎總結

使用 npm cnpm yarn 進行全域性安裝 檢視版本tsc v執行 ts 檔案tsc test.ts執行完成後會生成 js 檔案 自動執行 ts 檔案資料型別 關鍵字描述 任意型別 any宣告為 any 的變數可以賦予任意型別的值。數字型別 number 它可以用來表示整數和分數。字串型別 s...