免責聲明:因爲關於建立TypeScript的文章已經不少了,在這裏爲了完善個人這個系列,從網絡上copy了下面這篇介紹,原文地址:http://www.cnblogs.com/liangquewei/archive/2012/11/15/2772298.html,如若認爲有侵權,請原文做者及時告知!
對於咱們寫習慣了強類型、靜態類型語言的開發人員來說,開發弱類型、動態類型語言的程序可真是頭痛呀。特別是的走微軟技術路線,用習慣了強大無比的VS系列工具的開發人員,VS2003,VS2005,VS2008,VS2010,VS2012。。。。。。還有這些工具與其相結合的強類型語言,好比C#,那用起來多爽呀。 javascript
先來看看弱類型語言有些特色吧,若是本身歸納下,這樣太片面,網上找找別的人觀點再結合下本身的可能會更好一點,好,動手,查資料。先上廣告強站,百度吧,專業性強點的谷歌目前好像不是太好用呀,成天動不動就鏈接不上了。 php
百度一下「弱類型語言」,看到了無所不能的百度百科裏有定義,內容以下: html
弱類型語言也稱爲弱類型定義語言。與強類型定義相反。像vb,php等就屬於弱類型語言.例如:在vbscript中,能夠將字符串 12 和整數 3 進行鏈接獲得字符串 123,而後能夠把它當作整數 123,而不須要顯式轉換。 java
弱類型有時顯得很方便,有時卻又極易出錯。好比: jquery
var result=5+5; //two numbers typescript
alert(result); //outputs "10" npm
var result=5+'5'; // a number and a string 編程
alert(result); //outputs "55" windows
所以使用弱類型語言也要格外注意數據類型防止出錯。 瀏覽器
接下來看到一篇普及性的文章,介紹清楚了啥是動態語言,靜態語言,強類型語言,弱類型語言。
動態語言和靜態語言
一般咱們所說的動態語言、靜態語言是指動態類型語言和靜態類型語言。
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
2. for Node.js 安裝指令(使用NPM安裝): npm install -g typescript
用上了TypeScript,再用上強大的VS2012,咱們來親身感覺下開發TypeScript應用程序的便捷吧。
先安裝好TypeScript for Visual Studio 2012,呵呵,善於使用好工具呀。
再創建第一個TypeScript工程,TypeScriptHTMLAppDemo。
先來定一個類吧。
再來使用這個類的一個具體實例化後的對象吧。
這簡直就是寫C#嘛,呵呵,感受很爽吧,用這方式來開發javascript感受真是太爽了。不僅是類型明確,有類,有接口,有模塊,還有編譯時錯誤檢查,強大的智能感應。。。。。。可讓咱們少犯不少錯誤呀。
再看看程序編譯生成的javascript和運行的結果,呵呵。
好了,例子搞完了,看下TypeScript目前的體系結構吧,它目前封裝好的組件庫仍是有限的,不過在不斷的豐富當中,並且咱們本身也徹底能夠根據它的語法來經過封裝,複用咱們的javascript組件庫。
從它發佈的組件庫來看,它目前已經作好了jquery的封裝組件(jquery.d.ts),瀏覽器內置DOM的封裝組件(lib.d.ts),windows 8下winRT的封裝組件(winrt.d.ts)。