在Vue.js中使用TypeScript的方法
雖然 vue2.x 對TypeScript的支持還不是非常完善,但是從今年即將到來的3.0版本在GitHub上的倉庫 vue-next 看,為TS提供更好的官方支持應(yīng)該也會是一個重要特性,那么,在迎接3.0之前,不妨先來看看目前版本二者的搭配食用方法吧~
創(chuàng)建項目
- 雖然GitHub上有各種各樣相關(guān)的Starter,但是使用
Vue CLI應(yīng)該是目前相對比較好的方式,在使用vue create創(chuàng)建新項目時,對preset選擇Manually select features選項,之后添加TypeScript - 如果想在vue應(yīng)用中完整使用ES6中提供的類特性,那么在
class-style component syntax處選擇Y(本文主要介紹選擇Y的情況) - 對于
Babel來說,一般情況選擇使用,而linter / formatter的具體選擇可根據(jù)項目需求,此處不多說明
進(jìn)入項目
創(chuàng)建完成后,看一看 package.json ,可以發(fā)現(xiàn) vue-class-component 和 vue-property-decorator 以及其他ts相關(guān)的modules都已被添加,其中: vue-class-component 可以讓你使用class-style語法創(chuàng)建組件,比如以下代碼:
<template>
<div>
<button @click="decrement">-</button>
{{ count }}
<button @click="increment">+</button>
</div>
</template>
<script lang="ts">
import Vue from 'vue'
import Component from 'vue-class-component'
// Define the component in class-style
@Component
export default class Counter extends Vue {
// Class properties will be component data
count = 0
// Methods will be component methods
increment() {
this.count++
}
decrement() {
this.count--
}
}
</script>
而 vue-property-component 則完全依賴于前者,提供了除 @Component 外的其他幾種裝飾器,比如 @Prop
import { Vue, Component, Prop } from 'vue-property-decorator'
@Component
export default class YourComponent extends Vue {
@Prop(Number) readonly propA: number | undefined
@Prop({ default: 'default value' }) readonly propB!: string
@Prop([String, Boolean]) readonly propC: string | boolean | undefined
}
再來一個二者結(jié)合的簡單例子吧:
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<h1>{{ fullName }}</h1>
<button @click="reverseStr()">Reverse</button>
</div>
</template>
<script lang="ts">
import { Component, Prop, Vue, Watch } from 'vue-property-decorator';
@Component
export default class HelloWorld extends Vue {
@Prop() private msg!: string;
firstName = "rapt";
lastName = "azure";
mounted() {
console.log('mounted');
}
// Computed property
get fullName(): string {
return this.firstName + this.lastName;
}
// Method
reverseStr() {
this.firstName = this.firstName.split('').reverse().join('');
this.lastName = this.lastName.split('').reverse().join('');
}
}
</script>
- 此時,你的vue項目已經(jīng)有fully-typed的可能了,當(dāng)然也會有更好的自動補(bǔ)全以及錯誤提示。
- 為了更好的確定類型,可以創(chuàng)建例如
interfaces這樣的文件夾,充分利用ts的接口和類來使項目有更好的組織結(jié)構(gòu),可讀性和維護(hù)性。
另一種選擇
其實(shí)當(dāng)然也可以不使用class風(fēng)格啦,這樣的話,就和平時熟悉的vue更為相似了,而對類型當(dāng)然也是完全支持的。
這里也提供一個簡單的例子吧~<template>
<div class="hello">
<h1>{{ msg }}</h1>
<h1>{{ test }}</h1>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
name: 'HelloWorld',
props: {
msg: String,
},
data() {
return {
test: "Hello from TS" as string
}
},
methods: {
pressMe(): string {
return this.test + 'br'
}
}
});
</script>
其他的話
- 本文只是簡要探討了在Vue.js中使用TypeScript的可能性,更多的相關(guān)內(nèi)容在 官方文檔 里可以找到哦,或者也可以多去Github的Vue區(qū),TS區(qū)逛逛呢~
- TypeScript的出現(xiàn)為JavaScript的生態(tài)帶來了新活力,不管是前端三大框架Vue,React,Angular,還是Node系的后端框架比如Nest和Express,都在積極擁抱TS,希望以后整個生態(tài)會發(fā)展得越來越好吧~
總結(jié)
到此這篇關(guān)于在Vue.js中使用TypeScript的文章就介紹到這了,更多相關(guān)Vue.js使用TypeScript內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 詳解JavaScript私有類字段和TypeScript私有修飾符
- JS裝飾者模式和TypeScript裝飾器
- JavaScript/TypeScript 實(shí)現(xiàn)并發(fā)請求控制的示例代碼
- RxJS在TypeScript中的簡單使用詳解
- JavaScript和TypeScript中的void的具體使用
- typescript nodejs 依賴注入實(shí)現(xiàn)方法代碼詳解
- vue + typescript + video.js實(shí)現(xiàn) 流媒體播放 視頻監(jiān)控功能
- 手把手教你使用TypeScript開發(fā)Node.js應(yīng)用
- JavaScript?與?TypeScript之間的聯(lián)系
相關(guān)文章
Vue+Openlayer中使用select選擇要素的實(shí)現(xiàn)代碼
本文通過實(shí)例代碼給大家介紹Vue+Openlayer中使用select選擇要素,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2021-08-08
基于vue+echarts 數(shù)據(jù)可視化大屏展示的方法示例
這篇文章主要介紹了基于vue+echarts 數(shù)據(jù)可視化大屏展示的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2020-03-03
ElementUI?$notify通知方法中渲染自定義組件實(shí)現(xiàn)
這篇文章主要為大家介紹了ElementUI?$notify通知方法中渲染自定義組件實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
Vue中使用vee-validate表單驗(yàn)證的方法
vee validate 一個輕量級的 vue表單驗(yàn)證插件。接下來通過本文給大家分享Vue中使用vee-validate表單驗(yàn)證的方法,需要的朋友參考下吧2018-05-05
基于vue2框架的機(jī)器人自動回復(fù)mini-project實(shí)例代碼
本篇文章主要介紹了基于vue2框架的機(jī)器人自動回復(fù)mini-project實(shí)例代碼,具有一定的參考價值,有興趣的可以了解一下2017-06-06
編寫Vue項目,如何給數(shù)組的第一位添加對象數(shù)據(jù)
這篇文章主要介紹了編寫Vue項目,如何給數(shù)組的第一位添加對象數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04
詳解基于vue-cli3.0如何構(gòu)建功能完善的前端架子
這篇文章主要介紹了詳解基于vue-cli3.0如何構(gòu)建功能完善的前端架子,本文整合出具備基礎(chǔ)功能的前端架子,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10
基于Vue+Openlayer實(shí)現(xiàn)動態(tài)加載geojson的方法
本文通過實(shí)例代碼給大家介紹基于Vue+Openlayer實(shí)現(xiàn)動態(tài)加載geojson的方法,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2021-09-09

