第五节:简单又强大的数据类型:any任意值
上一節(jié)我們介紹了TypeScript的5中數(shù)據(jù)類型,我們知道,一旦變量被聲明定義為某種類型就不能賦其他類型的值(除了Null類型和Undefined類型外)。?
也許你會有疑問了,有時候我聲明一個變量,如果它是一個動態(tài)的數(shù)據(jù)類型,這時候我還不能確定它的值是什么類型的,有可能是數(shù)值number類型的,也有可能是字符串string類型的,亦或是其它類型的,這種話情況我該怎么去聲明它的類型呢?
任意值類型
這種情況下,TypeScript為我們提供了一種類型叫任意值類型:any。如果定義為any類型的變量,在編譯階段,則不會對它們的類型進行檢測,讓他們直接通過編譯階段。?
我們再來復(fù)習(xí)一下,如果定義一個普通的number類型的變量:
?let notSureType:number = 4;
?//賦字符串類型的值
?notSureType = 'hello';
?//錯誤提示
?//Type 'hello'is not assignable to type'number'
?
如我們所料,變量被賦一個字符串類型的值是不允許的。但是,如果是any類型的,則允許被賦任何類型的值。?
let notSureType:any = 4;
//賦字符串類型的值
notSureType = 'hello';
//允許,賦值成功
?
賦值成功,變量notSureType的類型也由number類型變成了string類型。
any類型是一種強大的兼容存在的JavaScript庫的類型系統(tǒng)。它允許跳過TypeScript的編譯時類型檢查。一般用它來定義一個未知類型的變量,并可以更改它的類型。?
未聲明類型
特別注意一下,如果我們聲明了一個變量,但是沒有指定它的類型,這種情況下,它會被當(dāng)作是any任意值類型處理。
//未指定任何類型
let notSureType;
//允許賦string類型的值
notSureType = 'hello';
//允許賦number類型的值
notSureType = 2;
?
相當(dāng)于:
//指定為any類型
let notSureType:any;
//允許賦string類型的值
notSureType = 'hello';
//允許賦number類型的值
notSureType = 2;
允許訪問任何屬性和方法
如果我們對一個數(shù)值進行取兩位小數(shù)的操作,相信你首先想到的辦法是使用?.toFixed()?方法,它是數(shù)值類型變量才有的方法。如果你對一個字符串類型的變量使用?.toFixed()?方法,則會很危險,因為它不存在此方法。?
這種情況一般會發(fā)生在變量的類型不確定的時候,一旦變量的類型是string類型,而我們還傻傻地以為它是number數(shù)值類型,調(diào)用了它的?.toFixed()?方法。此時,程序就會報錯了。?
此時,你剛剛學(xué)習(xí)的any類型可以幫到你了,你把變量定義為任意值any類型的時候,就可以訪問任何屬性和方法,即使變量不存在此方法,也不會報錯。
?
//定義string類型的變量
let notSure:any = '3.1415926';
//調(diào)用.toFixed()方法
notSure.toFixed(2);
?
變量notSure是any類型,但是我們調(diào)用了?.toFixed()?方法,程序并不會報錯。這一點很好地為我們兼容了變量類型不確定帶來的bug。
本節(jié)小結(jié)
理解any任意值的設(shè)計初衷,掌握它的使用方法,以及適用場景。
熱門文章
擴展閱讀
?原創(chuàng)教程:《ECMAScript 6 教程》
?原創(chuàng)教程:《Vue2.0基礎(chǔ)教程》
?原創(chuàng)教程:《Vue2.0進階教程》
?附加習(xí)題:《ECMAScript 6 教程》的 2套
?附加習(xí)題:《Vue2.0基礎(chǔ)教程》的 1 套
聊聊職場
?職場感悟:混口飯吃,談不上喜歡
?感到迷茫:我很努力,但依然很迷茫
?薪資待遇:那么點工資,能招到人嗎?
?搞笑黑話:互聯(lián)網(wǎng)公司黑話,搞笑到爆
?職業(yè)自由:程序員職業(yè)自由的6個階段
資源推薦
其實學(xué)好技術(shù)并不難,架構(gòu)師免費分享全網(wǎng)全套最新web前端、JavaScript、HTML5、PHP、數(shù)據(jù)庫……等視頻資料!
[總價值超3萬!]年薪35萬以上的大牛幾乎都看了!
加微信:?abc15689893?免費領(lǐng)取,由于領(lǐng)取的朋友比較多,所以加微信時一定要備注:7,否則很難通過。
?
總結(jié)
以上是生活随笔為你收集整理的第五节:简单又强大的数据类型:any任意值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [MATLAB学习笔记]textread
- 下一篇: [1维粒子模拟 version3.6]成