实现一个小工具-js对象转ts对象接口

985 阅读1分钟

平时拿到一大堆后端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))

实现效果如下

注: 目前还是初步阶段,还有待完善!!!