官术网_书友最值得收藏!

2.1.2 TypeScript語(yǔ)言版本的HelloWorld程序

準(zhǔn)備好了開發(fā)環(huán)境,相信你已經(jīng)迫不及待地想要嘗試一下TypeScript的使用了。我們先通過(guò)最原始的方式來(lái)使用TypeScript,這有助于你對(duì)TypeScript的工作流程進(jìn)行理解。

可以使用任何文本編譯器來(lái)創(chuàng)建一個(gè)名為1.HelloWorld.ts的源碼文件,在其中輸入如下代碼:

【代碼片段2-1 源碼見附件代碼/第2章/1.HelloWorld/1.HelloWorld.ts】

代碼本身沒有太多邏輯,我們不做過(guò)多介紹。之后從終端進(jìn)入源碼文件所在的目錄下,執(zhí)行如下指令來(lái)進(jìn)行TypeScript源碼文件的編譯:

     tsc 1.HelloWorld.ts

編譯成功后,你會(huì)發(fā)現(xiàn)目錄中多了一個(gè)1.HelloWorld.js文件,這就是編譯后的JavaScript目標(biāo)代碼,可以看到其中的代碼如下:

此JavaScript文件可以直接運(yùn)行。例如執(zhí)行如下指令,即可在終端看到輸出的“Hello, TypeScript”:

     node 1.HelloWorld.js

你或許有些奇怪,TypeScript源碼和JavaScript目標(biāo)代碼看起來(lái)完全一樣。的確如此,因?yàn)樵赥ypeScript源碼中,我們尚未使用TypeScript提供的特性。下面我們?yōu)間etString函數(shù)增加返回值類型和參數(shù)類型,修改TypeScript源碼如下:

上面的代碼中,我們指定了getString函數(shù)中的參數(shù)為字符串類型,且此函數(shù)的返回值類型也是字符串類型。如果將此TypeScript代碼直接當(dāng)作JavaScript代碼來(lái)執(zhí)行,會(huì)遇到語(yǔ)法錯(cuò)誤的問(wèn)題,對(duì)其進(jìn)行編譯后,可以發(fā)現(xiàn)編譯產(chǎn)物與之前1.HelloWorld.js文件中的代碼一模一樣,編譯結(jié)果將這類TypeScript的類型信息去掉了。

或許你還是不理解,添加這些TypeScript的類型信息有什么用呢,編譯的產(chǎn)物不還是普通的JavaScript代碼,我們直接寫JavaScript代碼不是更加方便嗎?對(duì)于簡(jiǎn)單的項(xiàng)目的確如此,但是想象一下,當(dāng)項(xiàng)目變得龐大后,我們使用的JavaScript對(duì)象或函數(shù)都可能是其他模塊提供的,如果沒有明確的參數(shù)類型信息,使用者很可能不知道如何傳參,也極有可能傳遞了錯(cuò)誤的參數(shù),為項(xiàng)目埋下隱患,并最終在生產(chǎn)環(huán)境中以故障的形式出現(xiàn)。你可以嘗試一下,再次修改TypeScript的源碼如下:

【代碼片段2-2 源碼見附件代碼/第2章/1.HelloWorld/1.HelloWorld.ts】

上面的代碼在使用getString函數(shù)時(shí),我們故意將參數(shù)設(shè)置成數(shù)值類型,編譯此文件,可以看到控制臺(tái)會(huì)輸出如下異常信息:

這種編譯錯(cuò)誤的提示非常清晰,很方便開發(fā)者查找錯(cuò)誤原因,并且避免了錯(cuò)誤在運(yùn)行時(shí)才暴露的問(wèn)題。對(duì)于大型項(xiàng)目開發(fā)來(lái)說(shuō),這真的是太重要了。

主站蜘蛛池模板: 瑞丽市| 大连市| 军事| 清丰县| 清河县| 巫山县| 嘉峪关市| 铅山县| 突泉县| 汽车| 阿鲁科尔沁旗| 囊谦县| 塔城市| 松桃| 河北区| 饶阳县| 乌海市| 东海县| 肃宁县| 察隅县| 五峰| 三都| 皮山县| 施甸县| 卓资县| 客服| 宽甸| 武穴市| 厦门市| 闸北区| 黔西| 邓州市| 乌拉特后旗| 静宁县| 噶尔县| 临安市| 钦州市| 太谷县| 平阴县| 汉寿县| 平顺县|