typescript+vue3-day4

74 阅读1分钟

v-model父子组件双向绑定

update: 固定写法 冒号后面的变量是父组件中v-model:后面的值

父组件

<template>
  <TsyIndex v-model:x="x"></TsyIndex>
</template>
<script setup lang="ts">
    import TsyIndex from"@/views/TsyIndex.vue"
    import {Ref,ref} from "vue"
    let x:Ref<number>=ref(10)
</script>

子组件

<template>
 <div>{{ x }}</div>
 <button @click="add" >+++</button>
</template>
<script lang="ts" setup>

defineProps({
  x:{
    type:Number
  }
})

const emit = defineEmits<{
  //update: 固定写法 冒号后面的变量是父组件中v-model:后面的值
  (event:'update:x',n:number):void
}>()
const add=()=>{
  // emit(上面event的值,修改的值)
  emit('update:x',40)
}
</script>

将一个文件转为全局文件

![DZIFAEZG2VN)V@9Y)37Q(]N.png](p6-juejin.byteimg.com/tos-cn-i-k3…?) vue组件

<script lang="ts" setup>
let asd:Tsy;
asd={
  name:'tsy',
  age:14
}

</script>

ts文件中的Tsy接口,在types文件夹中

interface Tsy{
  name:string,
  age:number
}

这么转换成全局文件,在tsconfig.json中修改

"include": [
    "types/**/*.d.ts",
  ],

Teleport传送门

to: 类名选择器 id选择器

<Teleport to='#app'>
    <!-- 将标签里的内容传送到指定dom元素内部末尾 -->
    <p>传送门</p>
 </Teleport>

类型增强 declare

全局变量
var tsy='tsy'
//在全局ts文件中
declare  var tsy:string;

针对第三方库的ts声明类型

场景引入的第三方库不是ts写的

// declare function 声明全局方法
// declare class 声明全局类
// declare enum 声明全局枚举类型
// declare namespace 声明全局对象
// interface 和 type 声明全局类型

或者借助插件
npm i --save-dev @type/库名
如
npm i --save-dev @type/jquery