vue3.0+TS的语法练习

【vue3学习P5-P10】vue3语法;vue响应式实现 vue3语法,vue3响应式的实现 阅读详情
<template>
  <div class="home">
    {{age}}
    <p>{{getSum}}</p>
    <p>{{two.id}}</p>
    <input type="text" ref="inputRef">
    <button @click="add">按钮</button>
    <h3>m1: {{m1}}</h3>
    <h3>m2: {{m2}}</h3>
    <h3>m3: {{m3}}</h3>
    <h3>m4: {{m4}}</h3>
    <button @click="update">更新</button>

    <son :propA='propA' @bindSend1="bindSend1" @test='test1'/>
  </div>
</template>

<script lang="ts">
import { Options, Vue } from 'vue-class-component';
import { Watch ,Prop} from "vue-property-decorator";
import {ref,shallowReactive, shallowRef,reactive,provide} from "vue"
import HelloWorld from '@/components/HelloWorld.vue'; // @ is an alias to /src
import son from '@/components/son.vue'
import { watch } from 'node_modules/vue/dist/vue';
// 地址数据接口
interface AddressResult {
  id: number;
  name: string;
  distance: string;
}
// 产品数据接口
interface ProductResult {
  id: string;
  title: string;
  price: number;
}
//函数类型
interface SearchFunc {
  (source: string, subString: string): boolean
}
@Options({
  components: {
    HelloWorld,
    son
  },
})
export default class Home extends Vue {
  public age:number=1
  public color:string='';
  public under: undefined=undefined;
  public nulls: null=null;
  public arrs: Array<number>=[1,2];
  public arr1: number[]=[1,2];
  //元组
  public arr2:[string,number,boolean]=['',1,true]
  //any 任意类型
   public arr3:any[]=['',1,true]
  public two:object={
    id:'000',
    age:''
  }
  public propA='1000'
  update(){
      this.color = 'blue'
  }
  test1(x:string){
    console.log(99,x);
  }
  setup(){
    const m1 = reactive({a: 1, b: {c: 2}})
    console.log(19);
    const m2 = shallowReactive({a: 1, b: {c: 2}})
    const m3 = ref({a: 1, b: {c: 2}})
    const m4 = shallowRef({a: 1, b: {c: 2}})
    return {
      m1,
      m2,
      m3,
      m4
    }
  }
  public inputRef = ref<HTMLElement|null>(null)
  public anyvalue:any
  public obj1:ProductResult={
    id: 'string',
    title: 'string',
    price: 50
  }
   name:string=''
   // 当一个函数没有返回值时,你通常会见到其返回值类型是 void
  created ():void {
      console.log('created');
      this.$nextTick(()=>{
        console.log(this.inputRef);
      })
      const color = ref('red')
      //祖孙之间传值
      provide('color', color)
      this.fun({id:1},1)
      this.fun2('1')
      this.createArray2<number>(11, 3)
      this.swap<string, number>('abc', 123)
      console.log( this.createArray2<number>(11, 3));
      console.log( this.swap<string, number>('abc', 123));
      this.mySearch('1','2')
  }
  mySearch: SearchFunc = function (source: string, sub: string): boolean {
    console.log(sub);
    console.log(source)
  return source.search(sub) > -1
}
bindSend1(x:string,b:string){
  console.log(x,b);
  
}
  get getSum(){
    return this.age+1
  }
  add(){
    this.age++
  }
  fun(val:object,idx:number){
    console.log(val,idx);
  }
  fun2(x:number|string){
      return x.toString().length
  }
  //类型断言
  fun3(x:string|number){
    if((<string>x).length){
      // return (<string>x).length
      return (x as string).length
    }else{
       return x.toString().length
    }
  }
  //函数泛型
  createArray2 <T> (value: T, count: number) {
    const arr: Array<T> = []
    for (let index = 0; index < count; index++) {
      arr.push(value)
    }
    return arr
  }
  //多个泛型参数的函数
  swap <K, V> (a: K, b: V): [K, V] {
   return [a, b]
  } 
  @Watch('age')
  Age(newVal:number){
      console.log(newVal,'watch');
  }
  // watch(user,()=>{
  //   age++
  // },{
  //     immediate: true,  // 是否初始化立即执行一次, 默认是false
  //     deep: true, // 是否是深度监视, 默认是false
  // })
}
</script>

<template>
  <div>
     儿子{{propA}}
     <button @click="bindSend1">儿子</button>
     <input type="button" value="点击触发父级方法" @click="handleSend"/>
      <input type="button" value="点击触发父级方法" @click="bindSend2"/>
     <sunzi></sunzi>
  </div>
</template>

<script lang="ts">
import { Options, Vue } from 'vue-class-component';
import { Watch ,Prop,Emit} from "vue-property-decorator";
import sunzi from '@/components/sunzi'
@Options({
  components:{
    sunzi
  }
})
export default class son extends Vue {
  @Prop({
    type: Number,
    default: 0,
    required: false
  })
  propA?: number
  public msg='123456789'
  public love='988989'

  @Emit()
  private bindSend1(msg:string,love:string){
  }
  public handleSend():void {
      this.bindSend1(this.msg,this.love);
  }
  @Emit('test')
  private bindSend2(){
      return '这个可以用test接受';
  }
}
</script>

<style>

</style>
Vue3通透教程【十七】Vite构建TS版本Vue项目 本系列将带领大家学习Vue3+TS+vite构成的前端工程化内容,本篇文章重点带领大家搭建Vue3+Ts版本项目! 阅读详情

相关推荐

Vue3通透教程【十八】TS为组件的props标注类型

通过TS语法来编写组件的props方法

商务合作欢迎私信我 4万+

TypeScript练习网站推荐

互动式学习:每个练习都是在浏览器中直接操作,网站提供了即时反馈,帮助用户边做边学,不需要在本地环境中配置 TypeScript。从基础到高级的练习基本类型、接口、函数、类、泛型、类型推断、类型守卫、条件类型、映射类型等。代码提示与帮助:每个练习都有详细的提示和帮助说明,帮助用户理解问题并找到解决思路。错误信息也会指引用户更好地调试代码。

没化妆,别看 2126

Vue3通透教程【十二】TS类型声明优势

众所周知的ts为强类型,这样的好处是什么?这篇文章为大家揭晓

商务合作欢迎私信我 2万+

【TypeScript】基础知识

void、never、enum、unknown、any,再加上自定义类型type、interface。推荐用来映射 number 类型,不推荐用来映射 string 类型(可以用 type 来映射)【js 方法】typeof 、instanceof、in。是接口,用于描述对象的属性(包括函数、非函数),用于给各种类型定义别名(注意不是类型声明)一句话总结:同名、可辨别的简单类型的 key。要求 T = A | B | C | D。【ts 方法】用 is 关键字。【ts 方法】可辨别联合类型。

weixin_40584890的博客 1077

Vue3通透教程【十五】补充TS开发环境搭建问题

凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章,应粉丝要求开始更新 Vue3 的相关技术文章,Vue 框架目前的地位大家应该都晓得,所谓三大框架使用人数最多,公司选型最多的框架,凉哥之前在文章中也提到过就是 Vue 框架之所以火起来的原因,和 Vue 框架相比其他框架的巨大优势,有兴趣的伙伴可以看一下Vue框架背后的故事尤大大对前端生态是这样看的。

商务合作欢迎私信我 2万+

ts_lesson:TS项目练习

ts_lesson:TS项目练习

vue3+ts实战

/(vue下面有红色波浪线)注意:如果下载成功,可以在项目的package.json文件里看到对应的版本号。在src包下创建http/api文件夹,并在文件夹下创建http.ts文件;在src包下创建router文件夹,并在文件夹下创建index.ts文件;(1)、router下的index.ts代码。

qq_44930306的博客 5088

MATLAB安装配置libsvm(附MinGW64配置)

首先声明版本,本人PC系统Windows10 64bit,matlab安装的2016b,libsvm安装的version3.2.21.首先需要下载libsvm包:从林教授的网站上下载: http://www.csie.ntu.edu.tw/~cjlin/libsvm/2.将libsvm3.2.2解压到matlab/toolbox目录下:解压后:D:\matlab2016b\toolbox\libs...

github_35807147的博客 4万+

TypeScript学习之路(一)

TypeScript 基础类型 一、TypeScript 是什么 TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。 TypeScript 提供最新的和不断发展的 JavaScript 特性,包括那些来自 2015 年的 ECMAScript 和未来的提案中的特性,比如异步功能和 Decorators,以帮助建立健壮的组件。 1.1 TypeScript 与 JavaScript 的区别

fyc_away的博客 354

告别抓瞎!手把手教你用Keysight Infinium和M8040完成PCIe 5.0 TX/RX信号完整性测试

本文详细介绍了如何使用Keysight Infinium示波器和M8040误码仪完成PCIe 5.0 TX/RX信号完整性测试。从测试前的设备准备、软件配置到具体的TX信号测试步骤和RX容限测试实战,提供了全面的操作指南和常见问题解决方案,帮助工程师高效完成PCIe 5.0合规性测试。

weixin_30911451的博客 503

WPS占用C盘空间解决方案与优化技巧

办公软件在长期使用过程中会产生大量缓存和历史文件,这些文件往往隐藏在系统目录中,导致磁盘空间被无声占用。以WPS为例,其版本历史备份、云同步缓存和模板库是主要空间占用源。通过分析文件存储机制,可以定位到具体的缓存路径,如AppData目录下的Kingsoft文件夹。针对这一问题,有效的解决方案包括手动清理、自动化脚本和注册表优化。对于需要持续监控的场景,可以结合PowerShell脚本和任务计划实现自动化管理。在实际应用中,这些技术不仅适用于WPS,也可迁移到其他办公软件的空间优化中,是每位IT运维人员和高

weixin_30788239的博客 456

【TS】TypeScript 一小时速成

本文适用于刚刚学完react18(使用jsx开发的版本),想使用ts开发,但是又不想投入太多时间学习ts的详细语法,想快速上手使用ts开发react的同学进入TS官网我们练习可以有两种方式一个是下载相关的开发工具,另外就是官网里有在线的方式我使用的是在线版本,后续开发会在react项目里加上ts,使用下面命令行就可以。

qq_53690996的博客 1364

vasp和ms_武汉理工大学赵焱课题组开发脚本 MS建模一键获取VASP输入文件POSCAR

本文给大家推介并分享一个通过Materials Studio一键获取VASP输入文件POSCAR的脚本,xsd2pos.pl。此脚本是武汉理工大学首席教授赵焱在帮助学生解决VASP计算问题时编写,解决了其他间接非手动获取POSCAR存在的问题,同时也相较于其他方法更为便捷,相信会对从事VASP计算的同行们带来便利。赵焱老师怀着哺育天下学子的情怀,希望给大家分享一下。下文介绍一下它的使用方法以及它所...

weixin_39706367的博客 2286

ts基础语法

一.vue中怎么使用ts 使用ts的vue项目,和js项目结构是类似的,多了几个文件 tsconfig.json: typescript配置文件,主要用于指定待编译的文件和定义编译选项 shims-tsx.d.ts: 允许.tsx 结尾的文件,可在 Vue 项目中编写 jsx 代码 shims-vue.d.ts: 主要用于 TypeScript 识别.vue 文件,Ts 默认并不支持导入 vue 文件 结合vue-property-decorator使用ts 在 vue 中使用 typescript

口袋的天空的博客 1万+

Delta并联机械手-Codesys实现以及正解逆解研究

由于Codesys的Robotics模块有Delta并联机械手的运动模型,因此借助Codesys的机械手运动模型,研究自己的正解逆解算法。

weixin_42386991的博客 5564

EtherCAT从站EEPROM组成信息详解(2):字8-15产品标识区

以实际的从站EEPROM数据为例,参照EtherCAT的SII规范,详细分析了从站EEPROM字8-字15的产品标识区内容组成。

kevin1499的博客 718

vue3+ts的基础语法

vue3和ts的基础语法

weixin_61607556的博客 948

60、拓扑码:从理论到应用

本博客深入探讨了拓扑码的基本理论、构造方法及其在量子计算中的应用。重点介绍了颜色码的拓扑起源、编码量子比特的计算方法、弦算子的构造与性质、边界条件的影响、同调描述以及与统计模型相关的错误阈值分析。同时,还涵盖了拓扑码的历史发展、与其他拓扑码的关系、与凝聚态系统的联系,以及其在激发态和高维中的表现。博客展示了拓扑码在容错量子计算和未来量子信息领域的广阔前景。

o1p2q3r的博客 129

用 vite 构建 vue3 + TS 项目实战

1、项目初始化 npm install create-vite@2.9.0 -g // 全局安装 create-vite npm init @vitejs/app shop-admin // 初始化项目(shop-admin 项目名) cd shop-admin npm install npm run dev 2、eslint 基础配置 npm install eslint --save-dev npm install@eslint/create-confi...

weixin_37883657的博客 1万+

北斗导航 | 卫星信号捕获跟踪原理解析

卫星信号的捕获与跟踪是导航接收机的"眼睛",其性能直接决定定位精度、动态适应性和抗干扰能力。随着北斗三号全球组网完成,新一代接收机正朝着。两大核心阶段,二者共同构成定位的基础。调制,频谱主瓣宽度达4.092MHz,较传统BPSK调制抗干扰能力提升3dB[38]。的目标持续演进,在自动驾驶、精密农业等领域展现出巨大应用潜力。二维空间中搜索峰值相关能量[4]。卫星导航接收机对信号的处理可分为。北斗三号B1C/B2a信号采用。北斗三号新增的B1C信号采用。

尘世冰封的专栏 773

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

vue3+ts 实际开发中 如何书写 vue3 语法

所以我们现在直接就开始使用3.2.0之后的写法与组件选项 setup 函数对比, 的优点: 编译器宏 编译器宏(compiler macros) 有:defineProps、defineEmits、withDefaults、defineExpose 等。编译器宏只能在 编译器宏必须在 在 块中是没有组件配置项的,也就是说是没有 props 选项,需要使用 defineProps 来声明 props 相关信息。defineProps 接收的对象和组件选项 props 的值一样。我这边引用了pug 如果需要

double_Fly_的博客 6861

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

VUE3&TS: Vue-cli4脚手架,Vue3+TS的项目搭建

通过 Vue-cli4 创建的 Vue3+TS 的项目,并进行一些基础使用的举例

干饭搬砖两不误。 5125

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

TS + Vue3.0

转载至:Vue3+Ts 快速上手

qq_41256253的博客 2384

Vue3+TS快速上手

文章目录一、TypeScript快速上手初识TypeScript安装TypeScript第一个TypeScript程序TypeScript常用语法基础类型接口类 一、TypeScript快速上手 初识TypeScript TypeScript 是 JavaScript 的一个超集,主要提供了类型系统和对 ES6+ 的支持,它由 Microsoft 开发,代码开源于 GitHub上 安装TypeScript 命令行运行如下命令,全局安装TypeScript: npm install -g typescript

蜡笔小星的博客 8894

vue3.0 + ts 引入详细步骤及语法校验报错解决办法

前端时间学习了ts,于是用脚手架搭了个vue3.0+ts+tsx的项目,各种语法校验问题,整理下遇到的问题以及解决办法,分享给大家。共勉!!!

wanglun_的博客 1万+

【前端-VUE+TS】Vue3基础语法(一)

【前端-VUE+TS】VUE3基础语法(一)

qq_48234463的博客 1631
上一篇: vue项目的PC端不同分辨率的适配
下一篇: vue3.0+ts语法及写法(最新)
yang_web
博客等级 码龄6年 5粉丝 29原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值