将API接⼝返回的数据直接转换成typescript⽀持的type类型
将API接⼝返回的数据直接转换成typescript⽀持的type类型
问题描述
在使⽤taro进⾏⼩程序的开发的时候,采⽤typescript可以很好地管理数据类型,但是接⼝数据类型要⾃⼰⼀个⼀个写,太⿇烦了!问题解决
下⾯的函数,可以通过递归的⽅式⾃动输出数据类型:
function getType(data){
if(typeof data ==='object'){
if(typeof data.length !=='undefined'){
if(data.length >0){
return`Array<${getType(data[0])}>`
}else{
return'Array<any>'
}
}
const keys = Object.keys(data)
if(keys.length ===0){
return'object'
}
let a = Object.keys(data).map(v =>{
const type =getType(data[v])
return`${v}: ${type}`
}).join(',\n')
a =`{\n${a}\n}`
return a
}else{
return typeof data
}
}
在⼩程序的console窗⼝中,可以在代码中先给wx绑定这个函数,然后就可以使⽤了,记住需要将函数内部的getType替换
成wx.getType。即在⼩程序启动的时候执⾏下⾯的代码就⾏了:
if(typeof data ==='object'){
if(typeof data.length !=='undefined'){
if(data.length >0){
return`Array<${wx.getType(data[0])}>`
}else{
return'Array<any>'
}
}
const keys = Object.keys(data)
if(keys.length ===0){
return'object'
}
let a = Object.keys(data).map(v =>{
const type = wx.getType(data[v])
return`${v}: ${type}`
}).join(',\n')
a =`{\n${a}\n}`
return a
typeof array}else{
return typeof data
}
}
这样就可以直接在console下输出数据的type定义。例⼦
给wx绑定好后,存储log的变量,得到temp1:
然后直接输⼊wx.getType(temp1)即可:
拷贝到vscode后,可以右键格式化⼀下。
再测试⼀个复杂的数组嵌套,发现也没有问题:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。