TypeScrpt相比JavaScript的主要特点

  • 多了属性声明类型,格式:属性名:声明类型
name:string="";  //此时name属性声明类型为string
复制代码
  • 使用class类来引入或暴露内容 TypeScript中将所有属性和方法封装成类,用类的形式引入或暴露其内容,在vue中具体示例可见下文“基本格式”。

基本格式

组件<script>中要加lang="ts"

import Vue from "vue"; // 导入vue声明
import Component from "vue-class-component"; // 导入组件装饰器
import {MyClassApi } from "@/api/myClassApi";//导入路径为@/api/下的myClassApi.ts文件中的MyClassApi 类
@Component({}) // Component装饰器装饰Login类(声明此为组件)
export default class MyVueTypeScript extends Vue {name:string = "";//属性格式:用=赋值,避免用:,因为:代表声明属性数据类型,属性后要加;myClass: MyClassApi = new MyClassApi();//新建一个类//(MyClassApi为之前myClassApi.ts文件里声明的类,此处来新建创建此类并接收)MyMethod(param) {   //方法格式:直接用函数调用的格式,无需用声明函数形式,且方法后不加;let apiname = this.myClass.apiName+param;  //调用MyclassApi类中的属性,与参数拼接console.log(apiname);}
复制代码

在路径@/api/下的myClassApi.ts文件中暴露class对象

export class MyClassApi {   //声明类名时首字母必须大写,并使用驼峰命名apiName:string ="api";apiMethond(){//编写相关方法}}
复制代码

Vue组件装饰器的使用说明

在上述代码中,装饰器用的vue-class-component,TypeScript中还有另一个装饰器vue-property-decorator 这两个装饰器功能一样,但是用法格式有所不同,在涉及组件传值的时候略有区别。

假设子组件为@/myComponent/路径下的myChildComponent.vue文件,文件中:

   export class MyChildComponent {   //声明类名时首字母必须大写,并使用驼峰命名childName:string ="";childMethond(){//编写相关方法}
复制代码
  • 先介绍vue-class-component,此中只有一个实例Component,导入时用

import Component from "vue-class-component" 使用格式如下:

import Vue from "vue";
import Component from "vue-class-component";
import MyChildComponent from '@/myComponent/myChildComponent.vue';   // 导入子组件//导入vue文件时文件名必须加后缀,否则识别不出来
@Component({components:{MyChildComponent  // 导入子组件},props: {              //父组件向子组件传值格式fatherMessage: String}
})
export default class MyVueTypeScript extends Vue {name:string = "";}
复制代码

此时父子组件传值时,只是把内容写在装饰器@Component中,其内容写法与vue没有区别

  • 再来看vue-property-decorator的用法 vue-property-decorator中有多个组件装饰器,这个插件是依赖于vue-class-component的,它将vue所有组件的用法都规定成了装饰器的写法,使用格式如下:
import Vue from "vue";
import { Component, Prop } from "vue-property-decorator" ;  // 导入多个组件的方式@Component({})
export default class MyVueTypeScript extends Vue {@Prop()                     //所有vue用法都转变成装饰器用法(此装饰器为声明prop)fatherAge: number@Prop({ default: '张三' })  //装饰器用法中传默认值fatherName: string@Prop([String, Boolean])    多个可能的类型(stringhuoboolean类型)ifWork: string | boolean@Watch('name')onrNameChanged(val: string, oldVal: string) {}
}复制代码

转载于:https://juejin.im/post/5bc9768de51d450e6973c619

Vue中用TypeScript改写JavaScript及装饰器使用相关推荐

  1. php和python对比-PHP、Python和Javascript的装饰器模式对比

    修饰模式(Decorator Pattern),又叫装饰者模式,是面向对象编程领域中,一种动态地往一个类中添加新的行为的设计模式.就功能而言,修饰模式相比生成子类更为灵活,这样可以给某个对象而不是整个 ...

  2. TypeScript reflect-metadata 结合方法装饰器实现的一个自定义语法检查的例子

    reflect-metadata 例子: import 'reflect-metadata';function validate(target: Object,key: string,descript ...

  3. TypeScript(八)装饰器

    目录 前言 定义 类装饰器 基本用法 操作方式 操作类的原型 类继承操作 方法装饰器 属性装饰器 存取器装饰器 参数装饰器 基本用法 参数过滤器 元数据函数实现 参数过滤 效果实践 装饰器优先级 相同 ...

  4. Angular 个人深究(一)【Angular中的Typescript 装饰器】

    Angular 个人深究[Angular中的Typescript 装饰器] 最近进入一个新的前端项目,为了能够更好地了解Angular框架,想到要研究底层代码. 注:本人前端小白一枚,文章旨在记录自己 ...

  5. 三分钟快速了解typeScript的装饰器

    ↓↓↓ typeScript系列学习文章目录 装饰器:装饰器是一种特殊类型的声明,它能够被附加到类声明,方法,属性或参数上,可以修改类的行为. 通俗的讲装饰器就是一个方法,可以注入到类.方法.属性参数 ...

  6. 【nodejs】让nodejs像后端mvc框架(asp.net mvc)一样处理请求--请求处理函数装饰器注册篇(5/8)【controller+action】...

    文章目录 前情概要 上篇文章把action的注册讲完了,但是我们的处理函数没有指定可接受的httpmethod,也没有别名上面的.下面我们使用typescript的特性之一装饰器来实现一把这个特性. ...

  7. python 装饰器(Decorators)原理说明

    本文目的是由浅入深地介绍python装饰器原理 装饰器(Decorators)是 Python 的一个重要部分 其功能是, 在不修改原函数(类)定义代码的情况下,增加新的功能 为了理解和实现装饰器,我 ...

  8. 从 JavaScript 到 TypeScript 6 - Vue 引入 TypeScript

    随着应用的庞大,项目中 JavaScript 的代码也会越来越臃肿,这时候许多 JavaScript 的语言弊端就会愈发明显,而 TypeScript 的出现,就是着力于解决 JavaScript 语 ...

  9. React 中 TypeScript 和装饰器及 Hooks

    概念 TypeScript 是强类型语言,相对于JavaScript 弱类型语言,它具有类型检测的功能,扩展了JavaScript 的语法. TS的安装与执行: //全局安装typescript np ...

最新文章

  1. php 获取手机品牌,三到五年内,这家品牌要冲刺手机市场第一梯队
  2. 数据科学家技能地铁图
  3. WIN10映射ubuntu1604共享目录(网络驱动器)
  4. C语言程序的内存分配方式
  5. Android应用程序组件Content Provider在应用程序之间共享数据的原理分析(2)
  6. cache 简单理解
  7. egg --- 初始化一个egg项目基本结构说明
  8. String、int、Integer互转的常用方法
  9. # 根据三边求角度_小升初数学必学的10种图形求面积法,你家娃都会了吗?
  10. 英国航空系统周末故障,可能会损失掉全年将近 3% 的利润
  11. pdf-lib给pdf添加水印并预览、下载、打印
  12. 读取SAE J1939协议数据流
  13. ASCII、GB2312、GBK、GB18030、Unicode、UTF-8、BIG5 编码分析
  14. 程序员转项目管理之考证PMP
  15. 外网远程访问群晖NAS,内网穿透
  16. win7防火墙规则设置
  17. [JAVA使用技巧]Java抽取Word和PDF格式文件_网络大本营
  18. 读书笔记1 PPT设计之道
  19. 解决测试过程中遇到的致命问题
  20. 企业微信开发(五)群活码

热门文章

  1. 人工智能芯片借鉴大脑学习机制实现终身学习
  2. 当脑机接口应用于建筑工地,会发生什么?
  3. 《星球大战:前线2》预告片发布
  4. DokiCam 360°4K相机:为极致运动爱好者而生
  5. 71岁的亿万富翁坐自家飞船成功游览太空!此前已为太空旅行砸了超10亿美元
  6. DeeCamp2021启动,李开复张亚勤吴恩达等大咖喊你报名啦
  7. Jupyter Notebook已出现“返祖现象”,这款工具让你在终端里使用它
  8. 合格的CTO应该是什么样?雷军王海峰王小川等共谈「技术创新」| CNCC2020
  9. 谷歌TPU训练BERT只要23秒,华为AI芯片达国际领先水平,MLPerf v0.7出炉
  10. 搞事情?!2020云·创季来啦,量子位带你领略云产业的耳目一新!