虽然 vue2.x 对TypeScript的支持还不是非常完善,但是从今年即将到来的3.0版本在GitHub上的仓库 vue-next 看,为TS提供更好的官方支持应该也会是一个重要特性,那么,在迎接3.0之前,不妨先来看看目前版本二者的搭配食用方法吧~
创建项目
进入项目
创建完成后,看一看 package.json ,可以发现 vue-class-component 和 vue-property-decorator 以及其他ts相关的modules都已被添加,其中: vue-class-component 可以让你使用class-style语法创建组件,比如以下代码:
<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 }
再来一个二者结合的简单例子吧:
<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>
另一种选择
其实当然也可以不使用class风格啦,这样的话,就和平时熟悉的vue更为相似了,而对类型当然也是完全支持的。
这里也提供一个简单的例子吧~<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的文章就介绍到这了,更多相关Vue.js使用TypeScript内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!
TS应该怎么学习?在实际项目中又应该怎么使用TS? 公司的项目开发要使用vue3和TS,写vue3倒是会,但是不会写TS,在网上看TS资料也是看了个大概。具体的使用不太会用,请问学习TS应该是什么步骤去学习,在项目中用TS该怎么用,需要注意什么点,求告知,求指导 看了CSDN上的文章
本文向大家介绍vue.js中mint-ui框架的使用方法,包括了vue.js中mint-ui框架的使用方法的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享了vue.js中mint-ui框架的使用方法,具体内容如下 1.安装vue2.0的mint-ui框架 2.引用和使用框架,我用的是全部组件,也可以按需选择加载相应的组件,不过要使用babel-plugin-component 3.创建一个
只含有运行时的构建版本 如果你熟悉 Vue.js,你应该知道 Vue.js 有两种构建版本: 运行时 + 编译器 与 只包含运行时。它们之间的区别在于编译器是否需要能够在运行时编译 template 选项。由于运行时构建版本比完整版本的构建版本轻约 30%(Vue 官方估算),为了更好的性能和更小的代码体积,Weex 集成的是运行时版本的 Vue。 具体来说,差异如下: 定义组件时不支持 temp
本文向大家介绍如何在 Vue.js 中使用第三方js库,包括了如何在 Vue.js 中使用第三方js库的使用技巧和注意事项,需要的朋友参考一下 在诸多 Vue.js 应用中, Lodash, Moment, Axios, Async等都是一些非常有用的 JavaScript 库. 但随着项目越来越复杂, 可能会采取组件化和模块化的方式来组织代码, 还可能要使应用支持不同环境下的服务端渲染. 除非你
我正在尝试将jQuery添加到Visual Studio代码中的TypeScript项目中。目标是通过$使用它,就像我在纯JavaScript中所做的那样,而不在html的头部提供jQuery标记。 我已经在项目中安装了我的jquery及其定义: 因此,智能感知非常有效: 但是打开页面,我得到了错误:“ReferenceError: $ is not defined”。 我已经阅读了几个相关主题,
本文向大家介绍使用Vue.js中的过滤器实现幂方求值的方法,包括了使用Vue.js中的过滤器实现幂方求值的方法的使用技巧和注意事项,需要的朋友参考一下 1、应用场景 使用ElementUI实现一个输入框,输入100,下方显示10000。 2、实现源码 (1)主页面 (2)JavaScript 3、实现效果 总结 以上所述是小编给大家介绍的使用Vue.js中的过滤器实现幂方求值,希望对大