TypeScript 使用方法

TypeScript 使用方法

標(biāo)簽(空格分隔): TypeScript


1.安裝

有幾個(gè)關(guān)鍵的npm包需要安裝到電腦中


npm install tsc -g //執(zhí)行typescript到j(luò)s的編譯

npm install tsd -g //用來(lái)下載typescript的聲明文件xx.d.ts,使IDE對(duì)第三方包提供智能提示

npm install gulp -g //構(gòu)建工具,非常重要

npm install babel -g   //暫時(shí)用不到,用來(lái)轉(zhuǎn)換es6代碼到es5

npm install babel-runtime //暫時(shí)用不到,用來(lái)轉(zhuǎn)換es6代碼到es5

2.gulp用法

gulp是一個(gè)Node下的構(gòu)建工具,底下有各類(lèi)自動(dòng)化構(gòu)建模塊,本次需要安裝的是gulp-tsc,安裝代碼如下


npm install gulp-tsc --save-dev

有了tscgulp-tsc,可以編寫(xiě)構(gòu)建任務(wù),輕松完成typescript到j(luò)s的自動(dòng)化編譯.

首先在工程的目錄下新建一個(gè)文件gulpfile.js(只能叫這個(gè)名字),填入以下代碼:


var typescript = require('gulp-tsc');

var gulp = require('gulp');

gulp.task('compile', function () {

return gulp.src(['./ts/**/*.ts'])

.pipe(typescript({

target: 'es5',//把typescript轉(zhuǎn)換成es5標(biāo)準(zhǔn)的js文件,也可以是es6,但這個(gè)node版本不支持

module: 'commonjs',//模塊使用nodejs的標(biāo)準(zhǔn)

}))

.pipe(gulp.dest('./es5/'))

});

這樣就編寫(xiě)了一個(gè)名叫compile的gulp 任務(wù),該任務(wù)的具體工作就是把ts文件夾下的所有后綴為*.ts的文件鏡像編譯到工程的es5文件夾下.

題外話,gulp的基本api非常簡(jiǎn)單,只有3個(gè),就是gulp.src獲取文件,gulp.pipe操作文件,gulp.dest保存文件.

3.gulp結(jié)合VS Code

有了上面定義好的gulpfile.js,再配合VS Code的task,就可以隨時(shí)編譯ts文件.

需要做的是配置vs code的task.json文件,在vs code中按下ctrl+shift+p,輸入task,選擇configure task runner,在自動(dòng)打開(kāi)的task.json文件中輸入以下內(nèi)容:


{

"version": "0.1.0",

"command": "gulp",

"isShellCommand": true,

"args": [

"--no-color"

],

"tasks": [

{

"taskName": "compile",//compile為gulpfile中定義的任務(wù)名字

"args": [],

"isBuildCommand": true,//build命令為true

"problemMatcher": "$msCompile"

}

]

}

以上的配置相當(dāng)于定義了剛才gulpfile中的的compile任務(wù)為我們vs code中的build任務(wù).

接下來(lái)隨時(shí)隨地就可以按下ctrl+shift+B運(yùn)行build任務(wù),執(zhí)行我們的typescript到j(luò)s的轉(zhuǎn)換.

4.tsd的用法

tsd是一個(gè)下載第三方包聲明文件的工具,比如一些常用模塊q,request,通過(guò)tsd install xxxx之后,會(huì)自動(dòng)保存在typeings文件夾下.

下載下來(lái)的文件一般都是xxxx.d.ts格式,有了個(gè)這個(gè)文件,就可以在VS Code中支持該包的智能提示.

接下來(lái)以request包為示例:


npm install request --save

tsd install request --save

在你需要智能提示的文件第一行中添加如下代碼:


///

那么該包就支持智能提示了.

tsd中收錄了絕大多數(shù)常用包,一般來(lái)說(shuō)夠我們使用,但是也有不幸沒(méi)被收錄的,比如我們這次使用的serialport包,如果你還想有智能提示的話,只有自己寫(xiě)一個(gè)serialport.d.ts文件了,在里邊聲明方法和接口(我已經(jīng)寫(xiě)了一部分我要用到的功能)

5.Typescript的模塊加載

最近的Typescript版本(1.5.3)是同時(shí)支持commonjs和es6的模塊加載的,但是,當(dāng)編譯目標(biāo)(compile target)為es6時(shí),不允許混合使用兩種模塊加載方式.

由于最新的nodejs(4.1.1)仍舊不支持es6模塊加載方式,所以目前推薦的做法還是使用commonjs風(fēng)格.

需要注意的是,在編寫(xiě)Typescript的時(shí)候,自己編寫(xiě)的模塊和第三方模塊有幾種不同的加載方式.

a.自己的模塊

自己編寫(xiě)的模塊可以被編譯器識(shí)別,并提供完整的類(lèi)型檢查和智能提示


import xxx from './foo/bar/hes.ts'

b.第三方模塊且下載了tsd文件

要想使用智能提示和類(lèi)型檢查,必須先提供tsd的reference,才能使用import導(dǎo)入該模塊,例如導(dǎo)入q模塊


///

import q = require('q');

c.第三方模塊且沒(méi)有tsd文件

對(duì)于沒(méi)有tsd文件的第三方模塊,IDE是無(wú)法提供精確的智能提示的,只能按照commonjs的語(yǔ)法來(lái)進(jìn)行導(dǎo)入:


var q  = require('q');

簡(jiǎn)而言之,使用import導(dǎo)入的模塊,支持類(lèi)型檢查和智能提示,使用如var foo = require('bar')導(dǎo)入的模塊不能享有這些特性.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奴艾,更是在濱河造成了極大的恐慌硕盹,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祈坠,死亡現(xiàn)場(chǎng)離奇詭異害碾,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)赦拘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)慌随,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人躺同,你說(shuō)我怎么就攤上這事阁猜。” “怎么了蹋艺?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵剃袍,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我捎谨,道長(zhǎng)民效,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任涛救,我火速辦了婚禮畏邢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘州叠。我一直安慰自己棵红,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布咧栗。 她就那樣靜靜地躺著逆甜,像睡著了一般虱肄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上交煞,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天咏窿,我揣著相機(jī)與錄音,去河邊找鬼素征。 笑死集嵌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的御毅。 我是一名探鬼主播根欧,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼端蛆!你這毒婦竟也來(lái)了凤粗?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤今豆,失蹤者是張志新(化名)和其女友劉穎嫌拣,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體呆躲,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡异逐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了插掂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灰瞻。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖燥筷,靈堂內(nèi)的尸體忽然破棺而出箩祥,到底是詐尸還是另有隱情,我是刑警寧澤肆氓,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布袍祖,位于F島的核電站,受9級(jí)特大地震影響谢揪,放射性物質(zhì)發(fā)生泄漏蕉陋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一拨扶、第九天 我趴在偏房一處隱蔽的房頂上張望凳鬓。 院中可真熱鬧,春花似錦患民、人聲如沸缩举。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)仅孩。三九已至托猩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辽慕,已是汗流浹背京腥。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留溅蛉,地道東北人公浪。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像船侧,于是被迫代替她去往敵國(guó)和親欠气。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容