TypeScript Any型別

admin發表於2018-08-22

Any型別從名字來看就比較任性,或者說比較博愛,它可以表示JavaScript中的任意型別的值。

雖然任性,實際應用十分必要。

有些值的型別是不確定的,比如使用者的輸入值,這個時候希望這些值能夠在編譯階段通過型別檢查。

特別說明:使用小寫形式any來宣告一個Any型別。

程式碼例項如下:

[typescript] 純文字檢視 複製程式碼
let anyValue: any = 8;
anyValue = "螞蟻部落";
anyValue = true;

Any型別的變數可以被賦值為任意值。

Object型別有類似作用,但是Object型別的變數只是允許你給它賦任意值 ,卻不能夠在它上面呼叫任意的方法,即便它真的有這些方法,程式碼例項如下:

[typescript] 純文字檢視 複製程式碼
let anyValue: any = 8;
anyValue.toFixed();

Any型別資料可以使用對應資料型別的方法或者屬性。

[typescript] 純文字檢視 複製程式碼
let anyValue: Object = 8;
anyValue.toFixed();

但是Object卻不能,會報錯,截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/22/002706p6viii4et44btrb4.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

Any型別特點總結:

(1).Any型別變數可以被賦值為任何型別資料,程式碼如下:

[typescript] 純文字檢視 複製程式碼
let anyValue: any = 8;
anyValue="螞蟻部落";

(2).Any型別資料可以賦值給任何資料型別變數(除never型別之外):

[typescript] 純文字檢視 複製程式碼
let anyValue: any = 8;
let str:string;
str=anyValue;

(3).如果資料是Any型別,那麼可以訪問它的任意屬性(即便是不存在):

[typescript] 純文字檢視 複製程式碼
let anyValue: any = 8;
anyValue.ant;

(4).Any型別物件任意屬性值都是Any型別:

a:3:{s:3:\"pic\";s:43:\"portal/201808/22/002712kttagpaps7nnn9tn.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

(5).Any型別資料可以當做函式或者建構函式呼叫,可以有任意引數:

[typescript] 純文字檢視 複製程式碼
let anyValue: any = 8;
anyValue();

(6).如果沒有明確給出資料型別,並且編譯器無法推斷,那麼將被規定為Any型別:

[typescript] 純文字檢視 複製程式碼
let obj: { a,b }

上面的程式碼等同於如下:

[typescript] 純文字檢視 複製程式碼
let obj: { 
  a:any,
  b:any
 }

相關文章