TypeScript 型別斷言

admin發表於2019-04-23

型別斷言可以實現對已存在資料型別的轉換。

程式碼例項如下:

[typescript] 純文字檢視 複製程式碼
let anyValue: any = "螞蟻部落";
let strLength: number = (<string>anyValue).length;

尖括號<>中的資料型別為目標型別;上面的程式碼可以將Any型別資料轉換為string型別。

再來看一段程式碼例項:

[typescript] 純文字檢視 複製程式碼
class Shape {
  webName:string="螞蟻部落"
}
class Circle extends Shape {
  address:string="青島市南區" 
  //code
}
function createShape(kind: string): Shape {  
  if (kind === "circle") 
    return new Circle();
}
let circle:Circle = <Circle> createShape("circle");

Circle是Shape子類,createShape函式的返回值值型別是Shape,進行一下型別斷言即可。

型別斷言也是有規則的,並不是隨意進行,看如下程式碼例項:

[typescript] 純文字檢視 複製程式碼
let str:string="螞蟻部落";
let num:number=<number>str

上面的程式碼會報錯,截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201904/23/222415zyza982ai55992tx.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

假設如下為型別斷言格式:

[typescript] 純文字檢視 複製程式碼
<T> e

只要滿足以下任何一個要求即可進行斷言:

(1).e可以賦值給型別為T的變數。

(2).T型別值可以賦值給e的資料型別的widened form的變數。

資料型別的widend form形式可以參閱Widened Types一章節。

相關文章