玩轉TypeScript(3)--類型轉換


使用強類型變量常常需要從一種類型向另一種類型轉換,通常使用ToString或ParseInt可以來實現一些簡單的轉換,但是有時候需要像.NET語言中那樣將一種類型顯示的轉換為另一種類型,在TypeScript規范中,被稱為"類型斷言",它仍然是類型轉換,只是語法是有些不同,比如要將字符型的轉換成數字型,使用如下所示的語法:

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

回答如下所示:

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對象具有相同的方法和屬性,那重疊就可以進行相互的轉換.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM