使用強類型變量經常須要從一種類型向另外一種類型轉換,一般使用ToString或ParseInt能夠來實現一些簡單的轉換,可是有時候須要像.NET語言中那樣將一種類型顯示的轉換爲另外一種類型,在TypeScript規範中,被稱爲"類型斷言",它仍然是類型轉換,只是語法是有些不一樣,好比要將字符型的轉換成數字型,使用以下所示的語法:java
var a:int=<int>someNumberAsString;
這樣的語法在javaScript中對DOM編程時可能會產生一些問題,stackoverflow中的提問以下:編程
anyone know how to cast in TypeScript?
有誰知道如何在TypeScript上進行類型轉換
I'm trying to do this:
我試着這樣進行轉換:
var script:HTMLScriptElement = document.getElementsByName("script")[0]; alert(script.type); but it's giving me an error:
可是返回了一個錯誤:
Cannot convert 'Node' to 'HTMLScriptElement': Type 'Node' is missing property 'defer' from type 'HTMLScriptElement' (elementName: string) => NodeList
回答以下所示:this
TypeScript uses '<>' to surround casts, so the above becomes:
TypeScript使用'<>'來支持轉換,所以上面的變成: var script = <HTMLScriptElement>document.getElementsByName("script")[0]; However, unfortunately you cannot do:
然而,不幸的是你不能像以下這樣進行轉換: var script = (<HTMLScriptElement[]>document.getElementsByName(id))[0]; You get the error
若是是這樣你將獲得一個錯誤 Cannot convert 'NodeList' to 'HTMLScriptElement[]' But you can do :
可是你能夠: (<HTMLScriptElement[]><any>document.getElementsByName(id))[0];
能夠看到,在TypeScript中類型轉換須要使用<類型>這樣的語形式,在javaScript語言中類型的轉換是透明隱式的進行的,可是在TypeScrpt中,必須得進行一次顯示的轉換:
var script=<HTMLScriptElement>document....
類型斷言僅僅只是TypeScript的設計時期的特性,被設計用於確保你可以從一種類型轉換成另外一種類型,TypeScript使用告終構類型,若是一個Duck對象具備相同的方法和屬性,那重疊就能夠進行相互的轉換.