vue使用ts 引入组件_vue cli4.0项目引入typescript

现有的项目是采用vue cli4.0脚手架生成的,现在想要引入typescript。

1.执行安装命令

npm install --save-dev typescript

npm install--save-dev @vue/cli-plugin-typescript

2.根目录下新建 tsconfig.json

{"compilerOptions": {"target": "esnext","module": "esnext","strict": true,"importHelpers": true,"moduleResolution": "node","experimentalDecorators": true,"esModuleInterop": true,"allowSyntheticDefaultImports": true,"sourceMap": true,"baseUrl": ".","allowJs": false,"noEmit": true,"types": ["webpack-env"],"paths": {"@/*": ["src/*"]

},"lib": ["esnext", "dom", "dom.iterable", "scripthost"]

},"exclude": ["node_modules"]

}

3.新增 shims-vue.d.ts

根目录下新建 shims-vue.d.ts,让 ts 识别 *.vue 文件,文件内容如下:

declare module '*.vue'{

import Vue from'vue';

exportdefaultVue;

}

4.修改入口文件后缀

src/main.js => src/main.ts

5.改造 .vue 文件

加上 lang=ts 可以让webpack识别此段代码为 typescript

6.使用装饰器插件

vue-class-component:强化 Vue 组件,使用 TypeScript装饰器 增强 Vue 组件,使得组件更加扁平化

vue-property-decorator:在 vue-class-component 上增强更多的结合 Vue 特性的装饰

Demo:

import { Vue, Component ,Watch} from 'vue-property-decorator';

@Component({

components: { Loading }

})

exportdefaultclass App extends Vue{

old_back:object=null,

transitionName:string= "slide-right";

get ...mapState("base", ["loadingStatus"]);

@Watch('$route')

onChangeValue(to:object, from:object){//console.log('$route', to, from)

const noBack = to.meta.noBack; //监听路由变化时的状态为前进还是后退

//去终节点左,从终节点过来右

if(to.meta.last) {this.transitionName = "slide-left";

}else if(from.meta.last) {this.transitionName = "slide-right";

}else if(from.meta.leaf) {//从其它叶子页面过来的,往右

this.transitionName = "slide-right";

}else{if(noBack) {//去到不需要返回的界面往右

this.transitionName = "slide-right";

}else{this.transitionName = "slide-left";

}

}

}

@Watch('loadingStatus')

onChangeValue(newVal: string){if(newVal) {

setTimeout(_=>{this.setLoading(false);

},1500);

}

}//弹出系统提示对话框

showAlert(msg:string) {

plus.nativeUI.alert(

msg,function() {//console.log("User pressed!");

},"报警详情","确定");

}

}

....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值