vue與TypeScript集成配置最簡教程

vue與TypeScript集成配置最簡教程

[TOC]

前言

Vue的官方文檔沒有給出與TypeScript集成的具體步驟,網(wǎng)上其他的教程不是存在問題就是與vue-cli建立的項目存在差異,讓人無從下手简肴。

下面我就給出vue-cli建立的項目與TypeScript集成的最簡配置。

初始化項目

首先用vue-cli建立webpack項目。這里為了演示方便棍厂,沒有打開router和eslint等棕孙,可以根據(jù)自身情況打開拷恨。

# vue init webpack vue-typescript

? Project name vue-typescript
? Project description A Vue.js project
? Author
? Vue build standalone
? Install vue-router? No
? Use ESLint to lint your code? No
? Setup unit tests with Karma + Mocha? No
? Setup e2e tests with Nightwatch? No

安裝TypeScript相關(guān)依賴和項目其余依賴脖律,用npm或cnpm

# cd /vue-typescript
# npm install typescript ts-loader --save-dev
# npm install

配置

修改目錄下bulid/webpack.base.conf.js文件,在文件內(nèi)module>rules添加以下規(guī)則

{
  test: /\.tsx?$/,
  loader: 'ts-loader',
  exclude: /node_modules/,
  options: {
    appendTsSuffixTo: [/\.vue$/],
  }
},

在src目錄下新建一個文件vue-shims.d.ts腕侄,用于識別單文件vue內(nèi)的ts代碼

declare module "*.vue" {
  import Vue from "vue";
  export default Vue;
}

在項目根目錄下建立TypeScript配置文件tsconfig.json

{
  "compilerOptions": {
    "strict": true,
    "module": "es2015",
    "moduleResolution": "node",
    "target": "es5",
    "allowSyntheticDefaultImports": true,
    "lib": [
      "es2017",
      "dom"
    ]
  }
}

重命名src下的main.jsmain.ts

修改webpack.base.conf.js下的entry>app'./src/main.ts'

修改src下的App.vue文件小泉,在<script>節(jié)點中添加lang=ts屬性

<script lang="ts">

測試

下面可以測試是否集成成功,編輯src/components/Hello.vue文件冕杠,修改<script>標(biāo)簽的內(nèi)容為TypeScript的形式

<script lang="ts">
  import Vue, {ComponentOptions} from 'vue'
  export default {
    name: 'hello',
    data() {
      return {
        msg: 'this is a typescript project now'
      }
    }
  } as ComponentOptions<Vue>
</script>

運行項目

# npm run dev

測試成功微姊,現(xiàn)在是一個TypeScipt項目了

進(jìn)階

配置官方推薦的vue-class-componenthttps://cn.vuejs.org/v2/guide/typescript.html

安裝開發(fā)依賴

# npm install --save-dev vue-class-component

修改ts配置文件分预,增加以下兩項配置

"allowSyntheticDefaultImports": true,
"experimentalDecorators": true,

改寫我們的Hello組件

<script lang="ts">
  import Vue from 'vue'
  import Component from 'vue-class-component'
  @Component
  export default class Hello extends Vue {
    msg: string = 'this is a typescript project now'    
  }
</script>

使用vue-class-component后兢交,初始數(shù)據(jù)可以直接聲明為實例的屬性,而不需放入data() {return{}}中笼痹,組件方法也可以直接聲明為實例的方法配喳,如官方實例,更多使用方法可以參考其官方文檔

https://github.com/vuejs/vue-class-component#vue-class-component

import Vue from 'vue'
import Component from 'vue-class-component'
// @Component 修飾符注明了此類為一個 Vue 組件
@Component({
  // 所有的組件選項都可以放在這里
  template: '<button @click="onClick">Click!</button>'
})
export default class MyComponent extends Vue {
  // 初始數(shù)據(jù)可以直接聲明為實例的屬性
  message: string = 'Hello!'
  // 組件方法也可以直接聲明為實例的方法
  onClick (): void {
    window.alert(this.message)
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末与倡,一起剝皮案震驚了整個濱河市界逛,隨后出現(xiàn)的幾起案子昆稿,更是在濱河造成了極大的恐慌纺座,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件溉潭,死亡現(xiàn)場離奇詭異净响,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)喳瓣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門馋贤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人畏陕,你說我怎么就攤上這事配乓。” “怎么了惠毁?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵犹芹,是天一觀的道長。 經(jīng)常有香客問我鞠绰,道長腰埂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任蜈膨,我火速辦了婚禮屿笼,結(jié)果婚禮上牺荠,老公的妹妹穿的比我還像新娘。我一直安慰自己驴一,他們只是感情好休雌,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著肝断,像睡著了一般挑辆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上孝情,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天鱼蝉,我揣著相機(jī)與錄音,去河邊找鬼箫荡。 笑死魁亦,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的羔挡。 我是一名探鬼主播洁奈,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼绞灼!你這毒婦竟也來了利术?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤低矮,失蹤者是張志新(化名)和其女友劉穎印叁,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體军掂,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡轮蜕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蝗锥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跃洛。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖终议,靈堂內(nèi)的尸體忽然破棺而出汇竭,到底是詐尸還是另有隱情,我是刑警寧澤穴张,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布细燎,位于F島的核電站,受9級特大地震影響陆馁,放射性物質(zhì)發(fā)生泄漏找颓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一叮贩、第九天 我趴在偏房一處隱蔽的房頂上張望击狮。 院中可真熱鬧佛析,春花似錦、人聲如沸彪蓬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽档冬。三九已至膘茎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間酷誓,已是汗流浹背披坏。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留盐数,地道東北人棒拂。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像玫氢,于是被迫代替她去往敵國和親帚屉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

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