vue3和typescript的新用法,区别于vue2
vue3+typescript的新特性
·
defineComponent的作用
vue3.0中 defineComponen的作用
vue3中,新增了 defineComponent ,它并没有实现任何的逻辑,只是把接收的 Object 直接返回,它的存在是完全让传入的整个对象获得对应的类型,它的存在就是完全为了服务 TypeScript 而存在的。
vite&vue3中使用批量导入 import.meta.glob import.meta.globEager
const modulesFiles = import.meta.globEager('./modules/*.ts')
const modules = Object.keys(modulesFiles).reduce(
(modules: { [key: string]: any }, path: string) => {
const moduleName = path.replace(/^\.\/modules\/(.*)\.\w+$/, '$1')
modules[moduleName] = modulesFiles[path]?.default
return modules
},
{}
)
export default modules
RouteRecordRaw
基础路由里面增加开发者自定义属性 router.ts的RouteRecordRaw类型校验
为了规范化typescript开发,增加路由对象类型限制,好处:允许在基础路由里面增加开发者自定义属性。
import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router'
const routes: Array<RouteRecordRaw> = [
{ path: '/', component: () => import('../views/Home/index.vue') },
{ path: '/video/:id', component: () => import('../views/Video/index.vue') }
]
const router = createRouter({
history: createWebHashHistory(),
routes
})
export default router
类型声明 reactive
export default interface Product {
name:String,
price:Number,
address:String
}
import Product from '@/interface/Product'
import {reactive} from 'vue'
const product = reactive({name:'xiaomi 11',price:5999,address:'北京'}) as Product
return {fatherData,info,product}
分页查询 字段属性类型验证
export default interface queryType{
page: Number,
size: Number,
name: String,
age: Number
}
import queryType from '../interface/Home'
data() {
return {
query:{
page:0,
size:10,
name:'测试',
age: 2
} as queryType
}
},
更多推荐
已为社区贡献6条内容
所有评论(0)