5分鐘上手TypeScript

初始化工程

針對(duì)使用npm的用戶(hù):

npm install -g typescript

安裝依賴(lài)項(xiàng)

npm install -g gulp-cli

全局安裝TypeScript和Gulp文捶。 (如果你正在使用Unix系統(tǒng),你可能需要使用 sudo命令來(lái)啟動(dòng)npm install命令行概疆。)

npm install --save-dev typescript gulp gulp-typescript

安裝typescript,gulp和gulp-typescript到開(kāi)發(fā)依賴(lài)項(xiàng)。

npm install --save-dev browserify tsify vinyl-source-stream

tsify是Browserify的一個(gè)插件能夠訪(fǎng)問(wèn)TypeScript編譯器。

vinyl-source-stream會(huì)將Browserify的輸出文件適配成gulp能夠解析的格式惜论,它叫做 vinyl。

npm install --save-dev watchify gulp-util

Watchify啟動(dòng)Gulp并保持運(yùn)行狀態(tài)止喷,當(dāng)你保存文件時(shí)自動(dòng)編譯馆类。 幫你進(jìn)入到編輯-保存-刷新瀏覽器的循環(huán)中。

npm install --save-dev gulp-uglify vinyl-buffer gulp-sourcemaps

Uglify幫你壓縮代碼弹谁,將花費(fèi)更少的時(shí)間去下載它們乾巧。

npm install --save-dev babelify babel-core babel-preset-es2015 vinyl-buffer gulp-sourcemaps

安裝Babelify和ES2015的Babel預(yù)置程序。 和Uglify一樣预愤,Babelify也會(huì)混淆代碼沟于,因此我們也需要vinyl-buffer和gulp-sourcemaps。

簡(jiǎn)單的例子

新建一個(gè)tsconfig.json文件:

{
    "files": [
        "src/main.ts"
    ],
    "compilerOptions": {
        "noImplicitAny": true,
        "target": "es2015"
    }
}

將ES2015及以上版本的代碼轉(zhuǎn)換成ES5和ES3鳖粟。

新建gulpfile.js文件

var gulp = require('gulp');
var browserify = require('browserify');
var source = require('vinyl-source-stream');
var tsify = require('tsify');
var sourcemaps = require('gulp-sourcemaps');
var buffer = require('vinyl-buffer');
var paths = {
    pages: ['src/*.html']
};

gulp.task('copyHtml', function () {
    return gulp.src(paths.pages)
        .pipe(gulp.dest('dist'));
});

gulp.task('default', ['copyHtml'], function () {
    return browserify({
        basedir: '.',
        debug: true,
        // 讓 tsify在輸出文件里生成source maps社裆。
        entries: ['src/main.ts'],
        cache: {},
        packageCache: {}
    })
    .plugin(tsify)
    .transform('babelify', {
        presets: ['es2015'],
        extensions: ['.ts']
    })
    .bundle()
    .pipe(source('bundle.js'))
    .pipe(buffer())
    .pipe(sourcemaps.init({loadMaps: true}))
    .pipe(sourcemaps.write('./'))
    .pipe(gulp.dest('dist'));
});

當(dāng) default執(zhí)行時(shí),copy-html會(huì)被首先執(zhí)行向图。將src下所有的HTMLcopy到dist目錄下

source maps允許我們?cè)跒g覽器中直接調(diào)試TypeScript源碼泳秀,而不是在合并后的JavaScript文件上調(diào)試。點(diǎn)擊查看瀏覽器調(diào)試TypeScript

Watchify啟動(dòng)Gulp并保持運(yùn)行狀態(tài)榄攀,當(dāng)你保存文件時(shí)自動(dòng)編譯嗜傅。 幫你進(jìn)入到編輯-保存-刷新瀏覽器的循環(huán)中。

Uglify幫你混淆壓縮代碼

在src目錄下新建一個(gè)index.html文件

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>Hello World!</title>
    </head>
    <body>
        <p id="greeting">Loading ...</p>
        <script src="bundle.js"></script>
    </body>
</html>

在src目錄下新建一個(gè)greet.ts文件

export function sayHello(name: string) {
    return `Hello from ${name}`;
}

在src目錄下新建一個(gè)main.ts文件

import { sayHello } from "./greet";

function showHello(divName: string, name: string) {
    const elt = document.getElementById(divName);
    elt.innerText = sayHello(name);
}

showHello("greeting", "TypeScript");

最后我們運(yùn)行

gulp

然后在瀏覽器里打開(kāi)dist/index.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末檩赢,一起剝皮案震驚了整個(gè)濱河市吕嘀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贞瞒,老刑警劉巖偶房,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異军浆,居然都是意外死亡棕洋,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)乒融,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)掰盘,“玉大人,你說(shuō)我怎么就攤上這事赞季±⒉叮” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵申钩,是天一觀(guān)的道長(zhǎng)次绘。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么邮偎? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任罗洗,我火速辦了婚禮,結(jié)果婚禮上钢猛,老公的妹妹穿的比我還像新娘。我一直安慰自己轩缤,他們只是感情好命迈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著火的,像睡著了一般壶愤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上馏鹤,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天征椒,我揣著相機(jī)與錄音,去河邊找鬼湃累。 笑死勃救,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的治力。 我是一名探鬼主播蒙秒,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼宵统!你這毒婦竟也來(lái)了晕讲?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤马澈,失蹤者是張志新(化名)和其女友劉穎瓢省,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體痊班,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡勤婚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辩块。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛔六。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖废亭,靈堂內(nèi)的尸體忽然破棺而出国章,到底是詐尸還是另有隱情,我是刑警寧澤豆村,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布液兽,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏四啰。R本人自食惡果不足惜宁玫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望柑晒。 院中可真熱鬧欧瘪,春花似錦、人聲如沸匙赞。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)涌庭。三九已至芥被,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間坐榆,已是汗流浹背拴魄。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留席镀,地道東北人匹中。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像豪诲,于是被迫代替她去往敵國(guó)和親职员。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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

  • 1跛溉、gulp的安裝 首先確保你已經(jīng)正確安裝了nodejs環(huán)境焊切。然后以全局方式安裝gulp: npm install...
    F_imok閱讀 2,373評(píng)論 1 11
  • gulpjs是一個(gè)前端構(gòu)建工具,與gruntjs相比芳室,gulpjs無(wú)需寫(xiě)一大堆繁雜的配置參數(shù)专肪,API也非常簡(jiǎn)單,學(xué)...
    井皮皮閱讀 1,295評(píng)論 0 10
  • gulpjs是一個(gè)前端構(gòu)建工具堪侯,與gruntjs相比嚎尤,gulpjs無(wú)需寫(xiě)一大堆繁雜的配置參數(shù),API也非常簡(jiǎn)單伍宦,學(xué)...
    依依玖玥閱讀 3,152評(píng)論 7 55
  • gulpjs是一個(gè)前端構(gòu)建工具芽死,與gruntjs相比,gulpjs無(wú)需寫(xiě)一大堆繁雜的配置參數(shù)次洼,API也非常簡(jiǎn)單关贵,學(xué)...
    build1024閱讀 528評(píng)論 0 0
  • gulpjs是一個(gè)前端構(gòu)建工具,與gruntjs相比卖毁,gulpjs無(wú)需寫(xiě)一大堆繁雜的配置參數(shù)揖曾,API也非常簡(jiǎn)單,學(xué)...
    小裁縫sun閱讀 927評(píng)論 0 3