平时拿到一大堆后端mock数据后,需要Interface总需要一个个手动修改,于是就想着手懂实现一个,js对象转 interface的函数
以下是初步的代码未处理边界
function obj2type(orignObj, tabNum = 1) {
let keys = Object.keys(orignObj);
let resObj = {};
let tabStr = '\t'.repeat(tabNum);
keys.forEach((key) => {
let obj = orignObj[key];
let typeStr = typeof obj;
if (typeStr !== 'object') {
resObj[key] = typeStr;
} else {
resObj[key] = obj2type(obj, tabNum + 1);
}
})
let resArr = Object.keys(resObj).map(key => {
return {
key,
val: resObj[key]
}
})
let resArrLen = resArr.length;
let str = "{\n";
resArr.forEach((item, index) => {
str += `${tabStr}${item.key}: ${resObj[item.key]};${tabStr}\n`;
})
if (tabNum > 1) {
str += "\t".repeat(tabNum - 1) + '}';
} else {
str += "};";
}
return str;
}
console.log(obj2type(orignObj))
实现效果如下
注: 目前还是初步阶段,还有待完善!!!