将 Typescript class 重构为两个函数

Refactor Typescript class into two functions

我在 Node JS 和 Typescript 中有一个项目,其中有一个带有 class 的文件,我用它来检查目录是否存在并创建另一个目录。我向该方法传递了两个参数,主目录 ('src/out') 和用于创建以下目录的字符串 ('api').

这是我的 class、dir 变量 ('src / out') 和 api 变量 ('api'):

export class createDir {
    checkExistsOrCreate(dir: string, api: any) {
        let dire = `${dir}${api}`;
        if (!fs.existsSync(dir)){
            fs.mkdirSync(dir);
        }
        if (fs.existsSync(dire)) {
            rimraf.sync(dire);
            fs.mkdirSync(dire);
        }else {
            fs.mkdirSync(dire);
        }
        return dire;
    }
}

我想做的是创建两个函数:第一个函数我传递主目录 ('src / out') 并检查它是否存在。第二个创建目录,如果主体不存在,它会创建主体目录和 api 目录 ('src / out / api'),如果主体存在,它只会创建 '/ api'目录。

我的问题是我不知道如何将两个函数分开以及如何告诉第二个函数主目录是否存在。

这是第一个只检查到达它的目录是否存在的函数:

export class exists {
    exitsDir(dir: string) {
        if (!fs.existsSync(dir)){
            return false;
        }else{
            return true;
        }
    }
}

这是class,我从中调用目录检查并将目录传递给检查:

class UtilsController {

    public async utilsDir () {

        try {
            let checkDir = new exists();
            await checkDir.exitsDir('src/out');         
        } catch (error) {
            console.log(error);
        }
    }
}

实际上,mkdir 函数可以在使用 recursive 选项时自动处理您的用例。

const fs = require('fs');
fs.mkdirSync('main/sub', {recursive: true});

有很多 类 并不是真正需要的,但这应该有用:

class UtilsController {
    public utilsDir(): Promise<boolean> {
        try {
            const checkDir = new exists();
            return checkDir.exitsDir('src/out');         
        } catch (error) {
            console.log(error);
        }
    }
}

const test = async () => {
    const utilsController = new UtilsController();
    const exists = await utilsController.utilsDir();
    console.log(exists);
};