用近似靜態語言、強類型語言的TypeScript開發屬於動態語言、弱類型語言的JavaScript


    對於我們寫習慣了強類型、靜態類型語言的開發人員來講,開發弱類型、動態類型語言的程序可真是頭痛呀。特別是的走微軟技術路線,用習慣了強大無比的VS系列工具的開發人員,VS2003,VS2005,VS2008,VS2010,VS2012。。。。。。還有這些工具與其相結合的強類型語言,比如C#,那用起來多爽呀。

    先來看看弱類型語言有些特點吧,如果自己概括下,這樣太片面,網上找找別的人觀點再結合下自己的可能會更好一點,好,動手,查資料。先上廣告強站,百度吧,專業性強點的谷歌目前好像不是太好用呀,整天動不動就連接不上了。

    百度一下“弱類型語言”,看到了無所不能的百度百科里有定義,內容如下:

    弱類型語言也稱為弱類型定義語言。與強類型定義相反。像vb,php等就屬於弱類型語言.例如:在vbscript中,可以將字符串 12 和整數 3 進行連接得到字符串 123,然后可以把它看成整數 123,而不需要顯式轉換。

弱類型有時顯得很方便,有時卻又極易出錯。比如:

var result=5+5; //two numbers

alert(result); //outputs "10"

var result=5+'5'; // a number and a string

alert(result); //outputs "55"

因此使用弱類型語言也要格外注意數據類型防止出錯。

    接下來看到一篇普及性的文章,介紹清楚了啥是動態語言,靜態語言,強類型語言,弱類型語言

    動態語言和靜態語言

通常我們所說的動態語言、靜態語言是指動態類型語言和靜態類型語言。

    1 動態類型語言:動態類型語言是指在運行期間才去做數據類型檢查的語言,也就是說,在用動態類型的語言編程時,永遠也不用給任何變量指定數據類型,該語言會在你第一次賦值給變量時,在內部將數據類型記錄下來。Python和Ruby就是一種典型的動態類型語言,其他的各種腳本語言如VBScript也多少屬於動態類型語言。

    2 靜態類型語言:靜態類型語言與動態類型語言剛好相反,它的數據類型是在編譯其間檢查的,也就是說在寫程序時要聲明所有變量的數據類型,C/C++是靜態類型語言的典型代表,其他的靜態類型語言還有C#、JAVA等。

對於動態語言與靜態語言的區分,套用一句流行的話就是:Static typing when possible, dynamic typing when needed。

     強類型定義語言和弱類型定義語言

     1 強類型定義語言:強制數據類型定義的語言。也就是說,一旦一個變量被指定了某個數據類型,如果不經過強制轉換,那么它就永遠是這個數據類型了。舉個例子:如果你定義了一個整型變量a,那么程序根本不可能將a當作字符串類型處理。強類型定義語言是類型安全的語言,需要進行變量/對象類型聲明的語言,一般情況下需要編譯執行。例如C/C++/Java/C#

     2 弱類型定義語言:數據類型可以被忽略的語言。它與強類型定義語言相反, 一個變量可以賦不同數據類型的值。

強類型定義語言在速度上可能略遜色於弱類型定義語言,但是強類型定義語言帶來的嚴謹性能夠有效的避免許多錯誤。另外,“這門語言是不是動態語言”與“這門語言是否類型安全”之間是完全沒有聯系的!

      例如:Python是動態語言,是強類型定義語言(類型安全的語言); VBScript是動態語言,是弱類型定義語言(類型不安全的語言); JAVA是靜態語言,是強類型定義語言(類型安全的語言)。弱類型語言是指不需要進行變量/對象類型聲明的語言,一般情況下不需要編譯(但也有編譯型的)。例如PHP/ASP/Ruby/Python/Perl/JavaScript等等。

       好了,到這普及性的知識應該已經差不多了,呵呵,想想到底開發javascript對於用習慣了強類型語言靜態語言的開發人員來講有些什么樣的困難吧。如果沒困難,那就不用看下去了,TypeScript也沒必要去了解了,呵呵。

       在javascript沒有運行之前,想做確認下數據的類型用的是否正確的,變量有沒有重復定義,相互覆蓋難呀。程序運行前的正確性判斷基本得靠人了,出錯的可能性那當然高了,而且對人的高求高呀。要是能有一種工具能幫助我們更好地開發javascript就好了,提升開發的效率,降低出錯機率。當然了,目前工具還是有些的,不過好像能起到的作用不是很多呀,畢竟這是javascripty語言本身的很多特性限制了,工具做更好也難。反正是不運行前,能做的發現錯誤工作太少了。工具上不能很好的解決這個問題,那是否考慮下換一種開發方式呢? 用一種類似靜態語言,強類型語言的開發方式來進行javascript的開發會更好一點呢? 呵呵,這思路不錯,而且人家已經做了這樣的事情了,好,請出我們這回的開發語言主角:TypeScript,人如其名呀,Type的,就是類型明確化的script,可不是一般的script呀。

      TypeScrip是什么東東呀?

       TypeScript是啥呀?

       它是一個Strong Tools for Large Application,官方的網站是http://www.typescriptlang.org/%EF%BC%8C%E9%9D%9E%E5%B8%B8%E5%85%B3%E9%94%AE ,還有一點非常的關鍵,它是開源的哦,完全免費的。

TypeScript是一個應用程序級的JavaScript開發語言。

TypeScript是JavaScript的超集,可以編譯成純JavaScript。

TypeScript跨瀏覽器、跨操作系統、跨主機,開源。

Starts from JavaScript, Ends with JavaScript

TypeScript遵循JavaScript的語法和語義,方便了無數的JavaScript開發者。

TypeScript可以重用現有的JavaScript代碼,調用流行的JavaScript庫。

TypeScript可以編譯成簡潔、簡單的JavaScript代碼,在任意瀏覽器、Node.js或任何兼容ES3的環境上運行。

TypeScript比JavaScript更具開發效率,包括:靜態類型檢查、基於符號的導航、語句自動完成、代碼重構等。

       TypeScript提供了類(Class)、模塊(Module)和接口(Interface),更易於構建組件。

用TypeScript創建簡單的Web應用程序,安裝TypeScript有兩種辦法:

      1. TypeScript for Visual Studio 2012

clipboard

      2. for Node.js 安裝指令(使用NPM安裝): npm install -g typescript

clipboard[1]

clipboard[2]

    用上了TypeScript,再用上強大的VS2012,我們來親身感受下開發TypeScript應用程序的便捷吧。

先安裝好TypeScript for Visual Studio 2012,呵呵,善於使用好工具呀。

clipboard[3]

再建立第一個TypeScript工程,TypeScriptHTMLAppDemo。

clipboard[4]

clipboard[5]

先來定一個類吧。

clipboard[6]

再來使用這個類的一個具體實例化后的對象吧。

clipboard[7]

clipboard[8]

clipboard[9]

clipboard[10]

    這簡直就是寫C#嘛,呵呵,感覺很爽吧,用這方式來開發javascript感覺真是太爽了。不只是類型明確,有類,有接口,有模塊,還有編譯時錯誤檢查,強大的智能感應。。。。。。可以讓我們少犯很多錯誤呀。

    再看看程序編譯生成的javascript和運行的結果,呵呵。

clipboard[11]

    好了,例子搞完了,看下TypeScript目前的體系結構吧,它目前封裝好的組件庫還是有限的,不過在不斷的豐富當中,而且我們自己也完全可以根據它的語法來通過封裝,復用我們的javascript組件庫。

clipboard[12]

    從它發布的組件庫來看,它目前已經做好了jquery的封裝組件(jquery.d.ts),瀏覽器內置DOM的封裝組件(lib.d.ts),windows 8下winRT的封裝組件(winrt.d.ts)


免責聲明!

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



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