第七节:在 TypeScript 中什么是类型推论?
上一節,我們學習了TypeScript中的一種新的數據類型:元組Tuple。沒學習上一節的同學可以戳:《又一種新的數據類型:元組Tuple》?
這一節,我們一起來學習一下TypeScript中的:類型推論。?
第五節我們介紹《任意值any》的時候有講過,我們定義一個變量的時候,如果沒有給它指定類型,也沒有給它賦值,那么這個變量就會被當作任意值any類型來處理,可以給它賦任意類型的值。?
任意值any類型
回顧一下:
? //未指定任何類型
? let notSureType;
? //允許賦string類型的值
? notSureType = 'hello';
? //允許賦number類型的值
? notSureType = 2;
?
相當于:
?
??//指定為any類型
?let notSureType:any;
? //允許賦string類型的值
? notSureType = 'hello';
? //允許賦number類型的值
? notSureType = 2;
?
但以上的寫法中,有一點需要注意的前提條件是:定義變量的時候,變量是沒有被賦值的。如果在定義變量的時候沒有指定類型,但又賦值了,會發生什么情況呢?
?
//未指定變量類型,且進行賦值
let sentence = "hello 前端君";
上面的一行代碼,我們看到,變量?sentence?定義的時候并沒有指定類型,但已賦值字符串:”hello 前端君”。
這種情況,和第一個任意值any案例聲明變量未指定類型,未賦值有什么區別呢?
我們對變量 sentence 做一個操作就知道了:
?
//未指定變量類型,且進行賦值
let sentence = "hello 前端君";
//賦數值類型的值:100
sentence = 100;
//結果:編譯報錯
?
我們看到了,編譯報錯。
提示:Type 'number' is not assignable to type'string'
意思是:數值number類型的值不能賦值給字符串string類型的變量。?
奇怪了,我們并沒有給變量?sentence?指定類型,為什么現在說它是string類型呢??
類型推論
這是因為TypeScript的類型推論在起作用了。?
類型推論:如果沒有明確的指定類型,那么 TypeScript會依照類型推論的規則推斷出一個類型。
很明顯,以上的案例中的?sentence?被推論為字符串string類型,而非任意值any類型,所以后續給它賦數值number類型的值7時,會報錯。?
這一節主要是提醒大家,在TypeScript中,當你去定義一個變量時,沒有指定類型時候,是否給它賦值,是會影響它的類型的。?
前端君給大家作個圖,讓大家更直觀的理解它們的區別:
(一目了然)
熱門文章
TypeScript系列,正在連載 。。。
?第1章節:《大白話,初識TypeScript》
?第2章節:《輕輕松松,安裝TypeScript》
?第3章節:《快速編譯TypeScript,提高開發效率》
?第4章節:《5種數據類型在TypeScript中的運用》
?第5章節:《強大的數據類型:any任意值》
?第6章節:《新的數據類型:元組Tuple》
?后續章節,陸續更新,敬請期待...
擴展閱讀
?原創教程:《ECMAScript 6 教程》
?原創教程:《Vue2.0基礎教程》
?原創教程:《Vue2.0進階教程》
?附加習題:《ECMAScript 6 教程》的 2套
?附加習題:《Vue2.0基礎教程》的 1 套
聊聊職場
?職場感悟:混口飯吃,談不上喜歡
?感到迷茫:我很努力,但依然很迷茫
?薪資待遇:那么點工資,能招到人嗎?
?搞笑黑話:互聯網公司黑話,搞笑到爆
?職業自由:程序員職業自由的6個階段
資源推薦
其實學好技術并不難,架構師免費分享全網全套最新web前端、JavaScript、HTML5、PHP、數據庫……等視頻資料!
[總價值超3萬!]年薪35萬以上的大牛幾乎都看了!
加微信:?abc15689893?免費領取,由于領取的朋友比較多,所以加微信時一定要備注:7,否則很難通過。
?
總結
以上是生活随笔為你收集整理的第七节:在 TypeScript 中什么是类型推论?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 科大星云诗社动态20210224
- 下一篇: 科大星云诗社动态20210223