返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue中如何运用TS语法
  • 642
分享到

Vue中如何运用TS语法

Vue运用TS语法Vue TS语法 2023-02-28 12:02:47 642人浏览 泡泡鱼
摘要

目录一、父子传值的用法父传子:defineProps的TS写法子传父:defineEmits的TS写法二、ref/Reactive的TS用法1.简单数据类型可以不定义ts类型2.如果

一、父子传值的用法

父传子:defineProps的TS写法

// 父组件:和 Vue2 一样正常传值
<template>
  <div class="login-page">
    <cp-nav-bar title="登录" right-text="注册"></cp-nav-bar>
  </div>
</template>
// 子组件:接收
<script setup lang="ts">
import { defineProps } from 'vue'
const props = defineProps<{
  title: string
  rightText?: string // ?表示可传可不传
}>()
// js中使用
console.log(props.title)
</script>
 
<template>
  <!-- 模板中直接使用变量名 -->
  <van-nav-bar
    fixed
    left-arrow
    :title="title"
    :right-text="rightText"
  ></van-nav-bar>
</template>

补充:

如果需要给 props 设置默认值,需要使用 withDefaults 函数:

const props = withDefaults(defineProps<{
  title?: string
  rightText?: string
}>(),{
  title: '首页'
})
 
// 以上代码通过语法糖解构,可以优化成如下代码:
const { title, title= "首页" } = defineProps<{
  title?: string
  rightText?: string
}>();

子传父:defineEmits的TS写法

// 子传
const emit = defineEmits<{
  (e: 'changeMoney', money: number): void
  (e: 'changeCar', car: string): void
}>()
 
// 父组件:和 vue2 一样正常接收
// @changeMoney="方法名"

二、ref/reactive的TS用法

1.简单数据类型可以不定义ts类型

ref() 会隐式的依据数据推导类型

// const money = ref<number>(10)
const money = ref(10)

2.如果是复杂类型,建议用泛型

type Todo = {
  id: number
  name: string
  done: boolean
}
const list = ref<Todo[]>([])
list.value = [
  { id: 1, name: '吃饭', done: false },
  { id: 2, name: '睡觉', done: true }
]

三、computed的TS用法 

推荐泛型,一行搞定

const total = computed<string>(() => (count.value * 2).toFixed(2));

四、非空断言

1.可选链

<script setup lang="ts">
import { onMounted, ref } from 'vue';
 
const input = ref< htmlInputElement | null >(null)
 
onMounted(()=>{
  // 如果获取的元素不是input,就可能没有value值
  console.log(input.value?.value);
})
</script>
 
<template>
  <div>App组件</div>
  <input type="text" ref="input" value="abc">
</template>

2.非空断言

  // 一定要确定不为空!!!
  console.log(input.value!.value)
  input.value!.value = '123'

五、自定义TypeScript类型声明文件

1.给JS文件提供类型

在导入 .js 文件时,TS 会自动加载与 .js 同名的 .d.ts 文件,以提供类型声明。

具体步骤如下:

1.declare 关键字:用于类型声明,为其他地方(比如,.js 文件)已存在的变量声明类型,而不是创建一个新的变量。

2.对于 type interface 等这些明确就是 TS 类型的(只能在 TS 中使用的),可以省略 declare 关键字。

3.其他 JS 变量,应该使用 declare 关键字,明确指定此处用于类型声明。

// 参考示例:自定义组件的类型,必须是同名的.d.ts文件
import CpIcon from '@/components/CpIcon.vue'
 
declare module 'vue' {
  interface GlobalComponents {
    CpIcon: typeof CpIcon
  }
}

2.共享类型

如果多个 .ts 文件中都用到同一个类型,此时可以创建 .d.ts 文件提供该类型,实现类型共享。

1.创建 index.d.ts 类型声明文件。

2.创建需要共享的类型,并使用 export 导出(TS 中的类型也可以使用 import/export 实现模块化功能)。

3.在需要使用共享类型的 .ts 文件中,通过 import 导入即可(.d.ts 后缀导入时,直接省略)。

到此这篇关于Vue中如何运用TS语法的文章就介绍到这了,更多相关Vue运用TS语法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue中如何运用TS语法

本文链接: https://lsjlt.com/news/197786.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Vue中如何运用TS语法
    目录一、父子传值的用法父传子:defineProps的TS写法子传父:defineEmits的TS写法二、ref/reactive的TS用法1.简单数据类型可以不定义ts类型2.如果...
    99+
    2023-02-28
    Vue运用TS语法 Vue TS语法
  • Vue中怎么运用TS语法
    本文小编为大家详细介绍“Vue中怎么运用TS语法”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue中怎么运用TS语法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、父子传值的用法父传子:defineProp...
    99+
    2023-07-05
  • Vue-cli3中如何使用TS语法
    这篇文章主要讲解了“Vue-cli3中如何使用TS语法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue-cli3中如何使用TS语法”吧!ts有什么用?类型检查、直接编译到原生js、引入新...
    99+
    2023-07-05
  • Vue-cli3中使用TS语法示例代码
    目录ts有什么用?为什么用ts?1、引入Typescript包2、配置3、让项目识别.ts4、vue组件的编写ts有什么用? 类型检查、直接编译到原生js、引入新的语法糖 为什么用t...
    99+
    2023-02-23
    Vue-cli3使用TS语法 Vue-cli3使用TS
  • 如何在Vue3中使用<script lang=“ts“ setup>语法糖
    这篇“如何在Vue3中使用<script lang=“ts“ setup>语法糖”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下...
    99+
    2023-07-06
  • vue3中如何使用ts
    目录如何使用tsapp.vueheader.vuelist.vuelistitem.vuefooter.vue如何使用ts 在创建vue脚手架的时候吧typescript选上 app...
    99+
    2024-04-02
  • 详解如何在Vue3使用<scriptlang=“ts“setup>语法糖
    目录迁移组件隐式返回definePropsdefineEmits默认关闭和defineExposeVue 3.2 引入了语法,这是一种稍微不那么冗长的声明组件的方式。您可以通过向 S...
    99+
    2024-04-02
  • 如何在vue中使用jsx语法
    目录为什么需要在vue中使用jsx在vue中如何使用jsxtemplate转jsx的语法转换为什么需要在vue中使用jsx 几年前面试的时候,被问过这个问题,当时我一脸懵,这两个东西...
    99+
    2024-04-02
  • vue中ts文件怎么应用
    这篇文章主要介绍了vue中ts文件怎么应用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue中ts文件怎么应用文章都会有所收获,下面我们一起来看看吧。vue中ts是指typescript文件,typescri...
    99+
    2023-07-05
  • vue3+ts实际开发中该如何优雅书写vue3语法
    目录vue3语法的发展优势Composition Api类型约束编译器宏definePropsdefineEmitsdefineExpose总结vue3语法的发展 Vue3 在早期版...
    99+
    2022-11-13
    vue3 ts 教程 vue3 写法 vue方法怎么写
  • Vue3项目中引用TS语法的实例讲解
    目录基础语法vue-routervuex#####elementPlusaxiossetup script基础语法 定义data  //script标签上 **lang="...
    99+
    2024-04-02
  • 怎么在Vue3中使用<script lang=“ts“ setup>语法糖
    迁移组件以下组件有两个道具(要显示的和一个标志)。通过另一个组件,计算模板中显示的小马图像的URL,基于这两个道具。该组件还会在用户单击它时发出一个事件。The image selected while the Ponypony ...
    99+
    2023-05-16
    Vue3 setup
  • vue项目中使用ts(typescript)入门教程
    目录1、引入Typescript2、配置文件webpack配置3、让项目识别.ts4、vue组件的编写data()中定义数据props传值完整代码案例最近项目需要将原vue项目结合t...
    99+
    2024-04-02
  • 如何使用Vue3+TS实现语音播放组件
    这篇文章主要介绍如何使用Vue3+TS实现语音播放组件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!该功能将使用vue3 + TS来实现语音播放组件,使用什么技术不重要,重要的是看懂了核心逻辑后,通过原生js、rea...
    99+
    2023-06-29
  • Vue如何取消eslint语法
    这篇文章给大家分享的是有关Vue如何取消eslint语法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。由于vue对语法的限制过于严格,以至于在我第一次编译运行的时候一直编译失败,...
    99+
    2024-04-02
  • R语言中library无法运行如何解决
    如果在R语言中无法运行library函数,可以尝试以下几种解决方法:1. 检查是否安装了相关的包:在运行library函数之前,需要...
    99+
    2023-10-09
    R语言
  • 如何使用Vue3+ts开发ProTable
    使用方法<template> <el-tabs type="border-card" v-model="activeName"> <el-tab-pane ...
    99+
    2023-05-14
    Vue3 ts ProTable
  • Vue项目中如何运用vuex的实战记录
    目录Vuex是什么?vuex使用周期图我的store目录实现一个vuex的示例总结Vuex 是什么? TIP 👉 官网解释:Vuex 是一个专为 Vue.js 应用...
    99+
    2024-04-02
  • c语言中运算符的用法
    c 语言运算符用于执行变量和常量的操作,包括算术(如加减乘除)、关系(如等于大于)、逻辑(如与或非)和位操作符(如左移右移)。不同类型的运算符具有不同的优先级,当多个运算符出现在同一表达...
    99+
    2024-04-29
    c语言
  • 如何运用Python循环语句
    本篇内容介绍了“如何运用Python循环语句”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  一、for循环  for循环可以用来遍历某一对...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作