首页 > 其他分享 >vue.js 类型转换 强类型转强类型

vue.js 类型转换 强类型转强类型

时间:2022-10-12 12:22:22浏览次数:57  
标签:类型转换 CapacityTypeArr vue console string number value 类型 转强

1、js常规类型转换

https://www.cnblogs.com/123525-m/p/15788443.html

https://blog.csdn.net/allway2/article/details/124955087

2、vue 强类型转强类型

自定义强类型ComponentOptions,用来接收所有Options选项数据。

  declare type ComponentOptions = {     label?: string     value?: FormValueType     disabled?: boolean     key?: string | number     children?: ComponentOptions[]     options?: ComponentOptions[]   } & Recordable declare type FormValueType = string | number | string[] | number[] | boolean | undefined | null declare type Recordable<T = any, K = string> = Record<K extends null | undefined ? string : K, T> type Record<K extends keyof any, T> = {     [P in K]: T; };   自定义数据类型BillingHandlingData declare type BillingHandlingData = {   BillingHandlingId: number   ItemCode: sting | number | undefined }     const CapacityTypeArr = reactive([] as ComponentOptions[])  //定义ComponentOptions类型 const Arr1 = reactive([]) //默认:never[] const getDictionaryList = async () => {   const ids = [18, 27, 28, 29]   const res = await getDictionaryListByIdsApi(ids)   CapacityTypeArr.length = 0   Arr1.length = 0   if (res.data !== null && res.data.length > 0) {     for (let i = 0; i < res.data.length; i++) {       let temp = res.data[i]        if (temp.TypeId == 18) {         CapacityTypeArr.push({ value: temp.Dkey, label: temp.Dvalue })//不提示         Arr1.push({ value: temp.Dkey, label: temp.Dvalue })//提示但不报错:不能将类型“string”分配给类型“never”。       }     }     if (CapacityTypeArr.length > 0) {     //报错:不能将类型“FormValueType”分配给类型“string | undefined”。不能将类型“null”分配给类型“string | undefined”。       formData.value.ItemCode = CapacityTypeArr[0].value        console.log('ItemCode', formData.value.ItemCode)       console.log('x1', CapacityTypeArr)      //方案一:      //当CapacityTypeArr的value是number类型时可行       console.log('0', parseInt(CapacityTypeArr[0].value))       console.log('1', CapacityTypeArr[0].value as any)//任意类型     // 当CapacityTypeArr的value是string类型时可行       console.log('2', CapacityTypeArr[0].value as string)       console.log('3', CapacityTypeArr[0].value + '')        console.log('3',String( CapacityTypeArr[0].value))     //方案二  重新定义一个ComponentOptions2,将value的类型修改为 number     //方案三 不使用强类型     formData.value.ItemCode = ChargeTypeArr[0].value  //仅提示但不报错: 类型“never”上不存在属性“value”。  对于小、中型项目,强类型校验,增加复杂度、工作时间,不划算。加一个判断就能避免报错了       if (Arr1.length > 0 &&isNaN(Arr1[0])) {         formData.value.ItemCode = Arr1[0].value       }       }   } }      

标签:类型转换,CapacityTypeArr,vue,console,string,number,value,类型,转强
From: https://www.cnblogs.com/hao-1234-1234/p/16784104.html

相关文章

  • vue3选中后颜色赋值切换
    vue3选中后颜色赋值切换html定义html内容:class="sideIndex==index?'active':''"<divv-for="(res,index)inresData":key="index"cla......
  • vue中Promise { pending }是什么?为何会出现这种状态,怎么解决这种问题?
    首先你需要知道promise要用then接收或者asyncawait例如:a()是一个Promise封装的方法 //定义一个变量直接a()赋值给bletb=this.a()console.log(b)//这里就......
  • Vue3中的单击双击事件
    <scriptsetup>import{ref}from'vue'lettimer=ref('')consthandleClick=()=>{if(timer.value){clearTimeout(timer.value)}......
  • Vue里面父组件嵌套子组件的生命周期
     最常见的4种状态1.Creation2.Mounting3.Updating4.Unmouting 通常create用来放API的如果是在Mount是挂载后操作DOM的   我们搞清楚他的生命周期顺序,父......
  • vue同时获取select的id和value
    <template><divclass="select1"><selectv-model="selectClassEnd"@change="selectClass($event)"><optionvalue="NONE">未选择</option><option......
  • vue中自己编写一个loader
    以一个解析pdf的loader为例首先在vue.config.js添加rule解析规则,1、test表示要解析的文件类型为pdf文件。2、use表示要使用的loader的位置,如果是通过npm安装的loader插......
  • 【精品】vue3中setup语法糖下通用的分页插件
    注意:本博客理论基础:https://blog.51cto.com/lianghecai/5743179效果自定义分页插件:PagePlugin.vue<scriptsetuplang="ts">//total:用来传递数据总条数//pageSize......
  • 数据类型&数据类型扩展&类型转换
    数据类型Java属于强类型语言要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用-->安全性高,速度较低Java的数据类型分为两大类基本类型(primitivety......
  • vue脚手架
    {path:"/user",name:"user",component:()=>import(xxx)}脚手架基于node的环境创建复杂vue项目的模板安装nodejs安装脚手架全局安装npmi-g@vue/cli检......
  • vue-router_学习笔记
    1.动态导入路由模块import{createRouter,createWebHashHistory,RouteRecordRaw}from"vue-router";//*导入所有routerconstmetaRouters=import.meta.glob(......