最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

TypeScript 入門基礎(chǔ)

2023-03-20 11:37 作者:千鋒前端  | 我要投稿


●?上一章, 我們講了 TS 的編譯和初步使用

●?現(xiàn)在我們就開始正式進(jìn)入 TS 的學(xué)習(xí)之旅


基礎(chǔ)類型

●? 我們先來對我們最基礎(chǔ)的數(shù)據(jù)類型進(jìn)行一些限制


布爾類型

●?當(dāng)前這個 boo 變量的數(shù)據(jù)類型被限制為了 布爾類型

●?一旦將來給這個變量賦值的時候, 只要不是布爾類型, 就會提示你類型錯誤


數(shù)值類型

●?ts 內(nèi)的 number 類型都是按照浮點(diǎn)數(shù)存儲的, 同時也支持十六進(jìn)制, 八進(jìn)制, 二進(jìn)制等其他進(jìn)制表示

●?給 num 變量限制為了 number 類型, 只要你給 num 賦值的是 number 類型數(shù)據(jù)就沒問題, 其他不行

字符串類

●?給 str 變量限制為了 string 數(shù)據(jù)類型

多個基礎(chǔ)類型

●?我們也可以通過 ( | ) 來給一個變量設(shè)置多個數(shù)據(jù)類型

●?這個 foo 變量就被限制為 string 或者 boolean 類型的數(shù)據(jù), 可以接受這兩種數(shù)據(jù)類型


數(shù)組類型

定義方式1

●?定義了一個 list 變量, 限制為一個數(shù)組的同時, 這個數(shù)組只能接受 number 數(shù)據(jù)

定義方式2

●?這種方式是采用的泛型的方式進(jìn)行定義, 泛型后面我們會詳細(xì)說

●?這種方式定義的數(shù)組, 也可以讓數(shù)組內(nèi)包含多種數(shù)據(jù)類型

●?表示這個數(shù)組內(nèi)可以添加 number 或者 string 類型的數(shù)據(jù)

元組類型

基礎(chǔ)定義

●?元組( Tuple ) : 是 TS 中給出的一個概念, 其實(shí)就是一個已知元素數(shù)量和數(shù)據(jù)類型的數(shù)組

元組是 TS 的一個概念, 在 JS 內(nèi)沒有元素這個概念

在 JS 中

數(shù)組是不限制長度的, 可以隨意添加多少數(shù)據(jù)

TS 的元組, 編譯以后, 其實(shí)就是 JS 中的數(shù)組

所以是不會被真正限制長度的

在 TS 中

元組也只是一個形式上的 已知元素數(shù)量 和 數(shù)據(jù)類型 的數(shù)組

不是說超過限定長度就會報錯

只是通過元組的方式, 建議你該數(shù)組的長度和類型

畢竟 TS 也只是在開發(fā)中給 JS 的各種數(shù)據(jù)添加上類型限制而已

●?將 list 限定為一個元組

○?該元組建議有兩個數(shù)據(jù)

○?[0] 位置數(shù)據(jù)是一個 number 類型數(shù)據(jù)

○?[1] 位置數(shù)據(jù)是一個 string 類型數(shù)據(jù)

○?初始化的時候, 就必須直接賦好值

●?一定要注意一個問題, 就是元組的值順序不能變

可選值

●?我們可以使用 問號( ? ) 來決定某個值為選填項

●?這個時候就是就是對 number 和 string 數(shù)據(jù)做了一個選填限制

●?該索引對應(yīng)位置可以有值可以沒有值

○?但是一定要注意, 順序不能變哦


元組越界

●?剛才我們說了, 元組其實(shí)本質(zhì)上還是數(shù)組

○?數(shù)組其實(shí)是沒有長度限制的

○?所以元組只是建議你不要超出長度, 但是其實(shí)超出去也沒事

●?所以超出限制長度的數(shù)據(jù), 就不會有過多的限制了

○?你所以寫的數(shù)據(jù)類型都可以

●?主要不在初始化的時候, 給出越界數(shù)據(jù), 后面可以向數(shù)組里面追加數(shù)據(jù)

●?而且追加出來的多余的數(shù)據(jù), 可以是 number 類型, 也可以是 string 類型

●?并且也沒有了順序的限制

●?但是其他數(shù)據(jù)類型還是不行

Any 類型

●?有些時候, 我們對于某個數(shù)據(jù), 沒有辦法確定是什么類型, 因?yàn)閿?shù)據(jù)源可能是來自用戶輸入, 或者某些第三方庫得來的, 所以我們沒辦法在一開始限制其數(shù)據(jù)類型

●?但是從 TS 的角度上來說, 每一個數(shù)據(jù)都要限制一次數(shù)據(jù)類型

●?所以, 給出了一個 Any(任意類型)

●?foo 這個變量可以接受任何數(shù)據(jù)類型, 就相當(dāng)于沒有限制

●?但是對于一個嚴(yán)謹(jǐn)?shù)某绦騿T來說, 還是不建議經(jīng)常性的使用 any, 因?yàn)檫@樣的話 TS 的意義就不在了

空類型

void

●?是一個和 any 類型剛好完全相反的類型, 它表示什么都沒有

●?我們可以給一個變量設(shè)置為 void 類型, 但是沒有人會這么做, 因?yàn)闆]有任何意義

●?當(dāng)你給 foo 設(shè)置為 void 類型以后, 這個變量就只能接受 undefined 和 null 類型數(shù)據(jù)了

●?其他的都不行

●?void 還有一個地方就是用在 函數(shù)的返回值

○?當(dāng)這個函數(shù)沒有返回值的時候, 你見到的類型限制就會是 void

●?當(dāng)然, 我們也可以倒推這個結(jié)果

●?也就是說, 當(dāng)你給一個函數(shù)的返回值設(shè)置為 void 以后

●?那么這個函數(shù)就不能寫返回值了

Never

●? 這個類型表示的是哪些永不存在的值的類型, 應(yīng)用的地方相對比較少

●?一般如果用 Never 去描述一個函數(shù)的返回值, 那么這個函數(shù)就不能有任何返回出現(xiàn), 也就是說這個函數(shù)必須不能正常結(jié)束, 所以我們就需要在該函數(shù)內(nèi)讓函數(shù)代碼報錯, 就是手動拋出異常, 或者讓函數(shù)永不結(jié)束

Undefined 和 Null

●?他們兩個和 void 很想, 本身在 TS 內(nèi)用處不是很大

●?分別對應(yīng) undefined 和 null 兩個數(shù)據(jù), 一般用不到


●?但是 undefined 和 null 可以作為任何類型的子類型出現(xiàn)

●?也就是你設(shè)置其他類型, 也可以填寫 undefined 或者 null

●?此時 n 被限制為 number 類型, 但是目前 n 的值是 undefined, 也沒有問題

●?因?yàn)?undefined 可以是 number 的子類型

object 類型

●?這是一個特殊的類型限制, 不僅僅是代表 對象數(shù)據(jù)類型

●?表示的是 非基礎(chǔ)數(shù)據(jù)類型 以外的所有類型

●?也就是除number,string,boolean,symbol,null 或 undefined 之外的類型


TypeScript 入門基礎(chǔ)的評論 (共 條)

分享到微博請遵守國家法律
石河子市| 织金县| 绥阳县| 台山市| 长武县| 博野县| 白沙| 琼结县| 平江县| 凯里市| 青河县| 灵山县| 香河县| 平邑县| 汉阴县| 凌源市| 休宁县| 玉龙| 安阳县| 安泽县| 石阡县| 三都| 永康市| 达尔| 福贡县| 柞水县| 铜山县| 巴林左旗| 洛浦县| 吉首市| 大石桥市| 新郑市| 江津市| 莱芜市| 霍林郭勒市| 盘山县| 石城县| 读书| 霍邱县| 保德县| 宝兴县|